我已经研究这个问题好几天了,我从经验中知道我通常会解决这些问题,但这次我遇到了障碍。
设想
我有一个在 Azure DevOps YAML 管道中实例化的 python 应用程序。应用调用 Azure DevOps REST API 来创建存储库
该应用程序使用 PAT(个人访问令牌)进行身份验证
第一个问题是,个人访问令牌作为人类用户连接到我。如果我离开公司,PAT 将被撤销,这对需要在非用户上下文中运行的应用程序不利。
所以现在我想设置我的 Python 应用程序以使用客户端凭据流向 Azure DevOps REST API 进行身份验证。
我的问题是,我找不到关于此的一致信息。
我在 Azure DevOps 中创建了一个应用程序:
我的计划是让这一切都在 Postman 中工作,然后将我的发现移植到 Python 代码中。所以说真的,我正在为我在 Postman 中所做的设置寻求帮助,我可以自己用 Python 完成其余的工作。
许多帖子一起讨论了 Azure DevOps 和 Azure AAD(Azure Active Directory),但是,当我在 Azure DevOps 中创建我的应用程序注册时,如图所示,我不明白为什么我会在 AAD 中做任何事情。(注意,我的 Azure DevOps 实例是在 Azure 之外创建的。Azure 对我的 Azure DevOps 实例一无所知)
任何指向有关如何执行此操作的正确信息的指针都会很好。请记住,我绝对需要客户端凭据类型流。我的应用程序和 Azure DevOps REST API 之间没有人工交互。
更新
- 您可以看到我用来打开和关闭 application/x-www-form-urlencoded 键/值对的复选框
- 资源- 499b84ac-1321-427f-aa17-267ca6975798显然是 Azure DevOps的GUID,不会改变
- 如果我从 500 错误中查看 HTML,我会看到:找不到 hostId 的分区:499b84ac-1321-427f-aa17-267ca6975798这是上面提到的 DevOps 资源 GUID。
这一切都非常令人困惑,但我确信我只需要调整一两件事就可以让它发挥作用。