Как правильно использовать клиентские библиотеки Azure DevOps с OAuth для длительных веб-сессий? - PullRequest
0 голосов
/ 16 апреля 2020

У нас есть веб-приложение с отслеживанием состояния, которое поддерживает длительный сеанс работы с сервером для каждого пользователя (пока пользователь работает с системным сеансом), которое должно работать с Azure DevOps. Мы используем . NET клиентские библиотеки .

Мы сохраняем VssConnection в течение времени жизни сеанса. Мы создаем соединение следующим образом:

var vssOAuthAccessTokenCredential = new VisualStudio.Services.OAuth.VssOAuthAccessTokenCredential(accessToken);
var connection = new VssConnection(connectionUrl, vssOAuthAccessTokenCredential);

Проблема здесь в том, что токен доступа истекает через некоторое время, и я не вижу какого-либо класса соединения / учетных данных в SDK, который будет принимать некоторый обратный вызов что я могу передать refre sh token.

Я пытался реализовать свой собственный IVssCredentialPrompt, но когда я создаю новый VssConnection, передавая мою реализацию IVssCredentialPrompt и CredentialPromptType.PromptIfNeeded, я получаю

System.ArgumentException: опция подсказки недопустима, поскольку процесс не является интерактивным. Имя параметра: PromptType.

Я также не могу создать свою собственную реализацию FederatedCredential, поскольку для нее требуется экземпляр IssuedToken, конструктор которого является внутренним.

Какое рекомендуемое решение для этого случая?

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете использовать токен PAT :

var credential = new VssBasicCredential(string.Empty, "PAT");
var connection = new VssConnection(new Uri("https://dev.azure.com/<your-organization>/"), credential);
...