Получение списка проектов для пользователя в Azure DevOps - PullRequest
3 голосов
/ 04 августа 2020

Я пытаюсь получить список проектов для определенного c пользователя. В ходе моего исследования я нашел 2 способа сделать это

  1. Используя механизм OAuth, а затем используя токен для получения списка проектов, частью которых является аутентифицированный пользователь. (https://dev.azure.com/ {Organization_Name} / _ apis / projects? api-version = 5.1 ), и он работает нормально, но проблема в моем вариант использования, в котором я хочу показать список проектов в раскрывающемся списке, и когда я буду следовать этому подходу, мне придется авторизоваться на экране авторизации. Итак, есть ли способ обойти это?

  2. Я также нашел способ, с помощью которого мы можем создавать PAT (токены личного доступа), а затем вызывать Azure DevOps API, но я не смог найти конечную точку, которая может возвращать список проектов для Пользователь "Speciif c", есть ли у кого-нибудь идеи, как этого можно достичь?

  3. Мой последний вопрос в том, что аутентификация в моем приложении поддерживается Azure AD может я использую токен AD в Azure API-интерфейсах DevOps?

Просто чтобы дать вам представление, я разрабатываю веб-приложение. Net Core 3.1, поддерживаемое Azure аутентификацией AD, и для Speci c функциональность Мне нужно получить список проектов из Azure DevOps, частью которых является подписанный пользователь.

1 Ответ

1 голос
/ 05 августа 2020

Получение списка проектов для пользователя в Azure DevOps

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

GET https://vsaex.dev.azure.com/{organization}/_apis/userentitlements/{userId}?api-version=5.1-preview.2

Чтобы получить userId с помощью REST API Пользовательские права :

GET https://vsaex.dev.azure.com/{organization}/_apis/userentitlements?api-version=5.1-preview.2

С этим REST API, мы могли бы получить userId.

Тестовые скрипты PowerShell:

$connectionToken="<MyPAT>"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$ProjectsBelongUrl = "https://vsaex.dev.azure.com/<MyOrganization>/_apis/userentitlements/<userId>?api-version=5.1-preview.2" 

Write-Host "URL: $ProjectsBelongUrl"

$UserEntitlements = (Invoke-RestMethod -Uri $ProjectsBelongUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})

$ProjectsList = $($Pipelines.projectEntitlements.projectRef.name | ConvertTo-Json -Depth 100)


Write-Host "User XX belog to which projects = $ProjectsList"

Результат теста:

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...