Azure DevOps Api无法与django-allauth azure一起使用

问题描述

我使用django-allauth使某人可以使用azure提供程序链接其Microsoft帐户,现在我想访问Azure DevOps Api。我在Azure Active Directory中注册了该应用程序,并启用了Azure DevOps权限。当我尝试访问https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=5.1时,返回状态码203。

查看文档(https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure-devops-rest-5.1#oauth2),我可以看到Azure DevOps身份验证所需的令牌URL是:https://app.vssps.visualstudio.com/oauth2/token,但是django-allauth从https://login.microsoftonline.com/common/oauth2/v2.0/token获取它的天蓝色令牌。

我的问题是:我可以以某种方式链接这两个令牌吗?是否需要使用我现有的令牌向https://app.vssps.visualstudio.com/oauth2/token发出请求,并为Azure DevOps获取新令牌?如果可以,我该怎么办?欢迎任何帮助

解决方法

恐怕您无法链接令牌,OAuth中的令牌发行是根据范围完成的。由于作用域不同,因此您不能使用一个提供程序发行的令牌访问另一个端点上的API。

我认为,两个选项之一将对您有用,尽管我对django-allauth的了解有限,但是我担心。

首先,您可以在Azure AD中创建新的应用程序注册,然后通过门户中的API权限向该应用程序授予对Azure DevOps API的访问权限。其次,您可能需要扩展django-allauth,然后指向另一个OAuth令牌端点,以便它可以从正确的范围请求令牌。否则,恐怕您将无法到达任何地方。