oauth-2.0 使用Azure AD OAuth 2.0从电子应用程序访问Azure DevOps API

qkf9rpyu  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(222)

我正在尝试从电子应用程序实现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&amp;reply_to=https%3A%2F%2Fdev.azure.com%2FXXXXXXX%2FXXXXX%2F_apis%2Fwit%2Fworkitems%3Fids%3D11016%252C54321%26api-version%3D6.0&amp;redirect=1&amp;hid=1b2cef85-XXXX-XXXX-XXXX-8b6420bc5933&amp;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权限)。

ubbxdtey

ubbxdtey1#

我尝试在我的环境中重现相同的结果,成功获得如下结果:

若要访问Azure DevOps,请确保创建Azure AD应用程序并添加如下所示的许可:

使用下面的端点为授权代码+PKCE流生成**code
请确保将
范围用作499b84ac-1321-427f-aa17-267ca6975798/user_impersonation**

GET
https://login.microsoftonline.com/TenantId/oauth2/v2.0/authorize?  
response_type=code  
&client_id=ClientID
&scope=499b84ac-1321-427f-aa17-267ca6975798/user_impersonation
&redirect_uri=RedirectUro
&code_challenge=CodeChallenge
&code_challenge_method=S256

当您点击上述端点时,将生成如下所示的代码

要生成令牌,请使用以下参数:

GET
https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id:client_id
grant_type:authorization_code
code:codegeneratedabove
redirect_uri:redirect_uri
code_verifier:S256
scope:499b84ac-1321-427f-aa17-267ca6975798/user_impersonation
client_secret:client_secret

回应:

若要访问Azure DevOps,请使用上面生成的访问令牌。

我能够成功获取Azure DevOps帐户详细信息,如下所示:

GET https://app.vssps.visualstudio.com/_apis/profile/profiles/me?api-version=6.0

  • 根据您的要求,您可以从Azure DevOps的令牌中获取详细信息。*

相关问题