【发布时间】:2020-07-20 23:53:28
【问题描述】:
我正在尝试为 ADO REST 调用提供服务,从我的应用程序到 ADO,代表应用程序,而不是登录到它的用户。
Microsoft 提供 REST API 来执行创建发布管道等操作。见这里:
这里的文档确实令人困惑,因为它将 Oauth 2 流程称为“accessCode”,据我所知,它不是任何有效流程类型的名称。
在调用 API 的主要文档中
它说请求正文应该是这样的:
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
授权网址:https://app.vssps.visualstudio.com/oauth2/authorize&response_type=Assertion
所以首先,有谁知道哪个文档是正确的,第一个还是第二个?
其次,如何让服务到服务从我的应用程序调用,以代表应用程序而不是用户调用这些 API?
我不希望应用程序的用户拥有在应用程序中创建发布的权限,因为很多人甚至都不是 ADO 用户,更不用说拥有创建发布的权限了。
我原以为 API 会支持 Oauth 2 授权类型的 client_credentials(授权代码授权),但我在 ADO REST 服务的文档中看不到任何此类示例。
【问题讨论】:
标签: azure oauth-2.0 azure-devops-rest-api