Как заменить PAT для доступа к Azure DevOps API в веб-API .NET?

У меня есть веб-API .NET, который я использую для взаимодействия с API Azure DevOps для создания и обновления рабочих элементов на досках Azure DevOps различных организаций и проектов DevOps. В настоящее время я использую для аутентификации личный токен доступа (PAT) из своей учетной записи, но по понятным причинам я хочу исключить использование этого PAT.

Я зарегистрировал приложение в Azure и предоставил ему разрешения vso.work_full. Я также добавил в свое приложение службу аутентификации.

public class AzureDevOpsAuthService
{
    private readonly IConfidentialClientApplication _clientApp;

    public AzureDevOpsAuthService(string clientId, string clientSecret, string tenantId)
    {
        _clientApp = ConfidentialClientApplicationBuilder.Create(clientId)
            .WithClientSecret(clientSecret)
            .WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantId}"))
            .Build();
    }

    public async Task<string> GetAccessTokenAsync()
    {
        var result = await _clientApp.AcquireTokenForClient(new[] { "499b84ac-1321-427f-aa17-267ca6975798/.default" }).ExecuteAsync();
        return result.AccessToken;
    }
}

Это не сработало, и я получил следующую ошибку:

Microsoft.VisualStudio.Services.Common.VssServiceException: TF401444: войдите в систему хотя бы один раз как {TENANT ID} в веб-браузере, чтобы включить доступ к службе. в Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.HandleResponseAsync (ответ HttpResponseMessage, CancellationToken cancelToken) в Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.SendAsync (сообщение HttpRequestMessage, опция завершения HttpCompletionOption, Object userState, CancellationToken cancelToken) в Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.SendAsync[T](сообщение HttpRequestMessage, Object userState, CancellationToken cancelToken) в Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.GetConnectionDataAsync(ConnectOptions ConnectOptions, Int64 LastChangeId, CancellationToken cancelToken, Object userState)

Я не уверен, в чем проблема. Кажется, мне следует добавить Приложение в качестве Пользователя в организациях? Но я не могу его найти, когда пытаюсь добавить пользователя или назначить ему роль участника.

Вопросы:

  • Является ли использование приложения Azure с несколькими арендаторами лучшим способом или есть лучший метод?
  • Как добавить приложение в качестве пользователя к различным арендаторам Azure, чтобы иметь доступ к их доскам Azure DevOps для создания и обновления рабочих элементов?

Если я не ошибаюсь, согласно клиентским библиотекам .NET для Azure DevOps вам понадобится существующий токен личного доступа для создания аутентифицированного подключения к Azure DevOps.

Rui Jarimba 10.06.2024 20:27
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
113
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Является ли использование приложения Azure с несколькими арендаторами лучшим способом?

Если вы хотите получить доступ к нескольким организациям, подключенным к разным идентификаторам Microsoft Entra ID, рекомендуется использовать приложение для нескольких клиентов.

Как добавить приложение в качестве пользователя к различным арендаторам Azure, чтобы иметь доступ к их доскам Azure DevOps для создания и обновления рабочих элементов?

  1. Создайте субъект-службу, используя мультитенантную аутентификацию, и добавьте uri перенаправления https://www.microsoft.com в TenantA.

  2. Откройте указанный ниже URL-адрес в частном браузере, чтобы добавить его к другому клиенту, например TenantB. https://login.microsoftonline.com/<TenantB ID>/oauth2/authorize?client_id=<Application ID of the app in TenantA>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F

    Он запросит авторизацию от имени организации, вы можете принять ее.

  3. После того, как все вышеперечисленное будет выполнено, войдите на портал TenantB и перейдите в Enterprise Application, вы увидите его. Вы можете назначить ему необходимую роль.

  4. Перейдите в организацию, подключенную к TenantB, найдите и добавьте приложение в свою организацию в разделе «Настройки организации» -> «Пользователи» -> «Добавить пользователей».

Другие вопросы по теме