【发布时间】:2019-12-20 17:15:34
【问题描述】:
对于内容存储在 JSON 文件中的 CMS 系统,我们希望使用存储库来跟踪和批准更改。当编辑器进行更改时,我们希望服务器能够提交更改并将更改推送到存储库,然后创建拉取请求。我们希望能够使用服务帐户而不是编辑帐户来执行此操作。
我认为我可以创建一个 Azure AAD 应用注册,这样我就可以创建一个 oauth2 不记名令牌以用于我的 api 请求,但我不知道如何授予该帐户对存储库的访问权限。门户有一个 API 权限项,我可以在其中将我的应用程序权限授予 Azure DevOps,但它只是用户模拟/委托权限,为应用程序本身提供权限的选项被禁用。
有可能做我们想做的事吗?
更新:我尝试过的事情
1) 我创建了一个 AAD 应用程序并为该应用程序创建了一个秘密,因此我可以使用 appId 和秘密来获取不记名令牌。然后,我尝试为我的应用程序添加 API 权限到 DevOps,但它只允许我创建委派权限,因为应用程序权限被禁用。我觉得如果我能给这个应用程序提供必要的权限,我的问题就解决了。
2) 我试图在 DevOps 和 Repos 中找到一种方法来允许我的 AAD 应用程序访问,但该应用程序没有出现在我查看过的任何地方。我看到的只是用户和组,我的应用没有出现在这两个列表中。
3) 我在https://app.vsaex.visualstudio.com/app/register 注册了一个应用程序并拥有一个appId 和秘密。我对此持怀疑态度,因为它需要一个回调 url,而我正在尝试使用 client_credentials。当我尝试使用此 appId 和密钥获取令牌并调用 https://app.vssps.visualstudio.com/oauth2/token 时,服务返回 400 错误。我请求不记名令牌的 POST 包括有效负载 client_id={the clientId}&client_secret={the secret}&grant_type=client_credentials 和 application/x-www-form-urlencoded 的内容类型。当我将 url 设置为 https://login.microsoftonline.com 并使用 AAD appId 和 secret 时,相同的代码会成功,但由于上述原因,该身份无法访问 DevOps。
4) 我在https://github.com/microsoft/azure-devops-auth-samples 上查看了示例,但其中大部分是交互式的,不符合要求。
【问题讨论】:
标签: azure authentication azure-devops azure-repos