Я пытаюсь сделать службу для обслуживания вызова ADO REST, из моего приложения в ADO, от имени приложения, а не от пользователя, вошедшего в него.
Microsoft предоставляет REST API для выполнения задач как создать выпуск релиза. Смотрите здесь:
https://docs.microsoft.com/en-us/rest/api/azure/devops/release/releases/create?view=azure-devops-rest-5.1#security
Документация действительно сбивает с толку здесь, поскольку она относится к потоку Oauth 2 как к "accessCode", который, насколько я могу видите, не является ли имя какого-либо действительного типа потока.
В основных документах для вызова API
https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops
он говорит что тело запроса должно выглядеть следующим образом:
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}
где
{0}: секретный URL-адрес клиента, полученный при регистрации приложения
{1}: URL закодированный «код», предоставленный с помощью параметра запроса кода в URL-адрес обратного вызова
{2}: URL-адрес обратного вызова, зарегистрированный в приложении
Это противоречит документации для создания выпуска (первая ссылка ) который говорит:
Тип: oauth2 Поток: accessCode
URL авторизации: https://app.vssps.visualstudio.com/oauth2/authorize&response_type=Assertion
URL токена: https://app.vssps.visualstudio.com/oauth2/token?client_assertion_type=urn: ietf: params: oauth: тип утверждения клиента: jwt-bearer & grant_type = urn: ietf: params: oauth: тип предоставления: jwt-bearer
То есть во-первых , делает Anyo Не знаете, какая документация правильная, первая или вторая?
И во-вторых , как мне сделать службу службой для вызова из моего приложения, чтобы вызывать эти API от имени приложение, а не пользователь?
Я не хочу, чтобы пользователи приложения имели разрешения на создание релиза в приложении, так как многие даже не будут пользователями ADO, не говоря уже о разрешениях на создание релизов .
Я бы подумал, что API будет поддерживать тип предоставления Oauth 2 client_credentials (предоставление кода авторизации), но я не вижу примеров этого в документации для служб ADO REST.