我正在尝试从电子应用程序实现OAuth 2.0身份验证(Bearer JWT令牌),以便访问Azure DevOps API(存储库、工作项、测试计划)。
Azure DevOps组织受AAD支持,因此我正在尝试使用Azure AD /令牌终结点提供的访问令牌访问Azure DevOps API。
我将使用带有PKCE的授权代码流来获取令牌。
但是,在访问Azure DevOps API时,我经常看到有关错误作用域的错误消息。The corresponding application isn't registered within the Azure AD tenant.
对于curl调用,我看到以下内容:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="https://spsprodcus2.vssps.visualstudio.com/_signin?realm=dev.azure.com&reply_to=https%3A%2F%2Fdev.azure.com%2FXXXXXXX%2FXXXXX%2F_apis%2Fwit%2Fworkitems%3Fids%3D11016%252C54321%26api-version%3D6.0&redirect=1&hid=1b2cef85-XXXX-XXXX-XXXX-8b6420bc5933&context=eyJodCI6XXXXXXXXXXXXLCJjcyI6IiJ90#ctx=eyJTaWduSW5XXXXXXW5lLmNvbSJdfQ2">here</a>.</h2>
</body></html>
当然,我的AAD注册应用程序添加了Azure DevOps API权限:
我已尝试另一个选项-从此处创建的Azure DevOps支持的应用注册中获取令牌:https://aex.dev.azure.com/app/register,但随后会显示以下错误:The corresponding application isn't registered within the Azure AD tenant.
个
尽管如此,我发现注册到Azure DevOps门户的应用程序未显示在Azure AD应用程序列表中。
因此,我开始考虑,要么是Azure DevOps的PKCE授权代码流应该不同(在API调用方面),要么是Azure AD应用程序有问题(例如,作用域或API权限)。
1条答案
按热度按时间ubbxdtey1#
我尝试在我的环境中重现相同的结果,成功获得如下结果:
若要访问Azure DevOps,请确保创建Azure AD应用程序并添加如下所示的许可:
使用下面的端点为授权代码+PKCE流生成**
code
:请确保将范围用作
499b84ac-1321-427f-aa17-267ca6975798/user_impersonation
**当您点击上述端点时,将生成如下所示的代码:
要生成令牌,请使用以下参数:
回应:
若要访问Azure DevOps,请使用上面生成的访问令牌。
我能够成功获取Azure DevOps帐户详细信息,如下所示: