对于内容存储在 JSON 文件中的 CMS 系统,我们希望使用 repo 来跟踪和批准更改。当编辑器进行更改时,我们希望服务器能够提交更改并将更改推送到存储库,然后创建拉取请求。我们希望能够使用服务帐户而不是编辑帐户来执行此操作。
我以为我可以创建一个 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 和 secret 获取令牌并调用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 和机密时,相同的代码会成功,但由于上述原因,该身份无法访问 DevOps。
4) 我已经查看了https://github.com/microsoft/azure-devops-auth-samples上的示例,但其中大多数是交互式的,不符合要求。