首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Azure AD DevOps 2.0从电子应用程序访问Azure API

使用Azure AD DevOps 2.0从电子应用程序访问Azure API
EN

Stack Overflow用户
提问于 2022-10-15 15:30:40
回答 1查看 115关注 0票数 0

为了访问Azure DevOps API (repos、工作项、测试计划),我尝试从电子应用程序实现DevOps 2.0身份验证(Bearer )。

Azure DevOps组织是AAD支持的,因此我尝试使用Azure AD /token端点提供的访问令牌访问Azure DevOps API。

我使用PKCE中的授权代码流来获得令牌。

但是,在访问Azure DevOps API时,我经常会看到有关错误范围的错误消息。

The scope is invalid

通过curl呼叫,我看到了以下内容:

代码语言:javascript
运行
复制
<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获得令牌--在这里创建了一个基于https://aex.dev.azure.com/app/register的应用程序注册:,但随后显示了以下错误:

The corresponding application isn't registered within the Azure AD tenant.

不过,我发现在Azure DevOps门户注册的应用程序没有显示在Azure应用程序列表中。

因此,我开始认为,对于Azure DevOps,使用PKCE的授权代码流应该是不同的(就API调用而言),或者是Azure AD应用程序有问题(例如作用域或API权限)。

EN

回答 1

Stack Overflow用户

发布于 2022-10-17 10:31:30

我尝试在我的环境中复制相同的内容,并成功地获得了如下结果:

要访问Azure DevOps,请确保创建Azure AD应用程序,并添加同意的权限如下:

使用以下端点为授权code流生成code+PKCE:

确保将499b84ac-1321-427f-aa17-267ca6975798/user_impersonation使用作用域

代码语言:javascript
运行
复制
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

当您到达上述端点时,将生成代码,如下所示:

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

代码语言:javascript
运行
复制
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帐户的详细信息,如下所示:

代码语言:javascript
运行
复制
GET https://app.vssps.visualstudio.com/_apis/profile/profiles/me?api-version=6.0

根据您的需求,您可以从标记中从Azure DevOps获取详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74080759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档