oauth2.0 如何简单地获取承载令牌以向Azure DevOps API发送请求?

r6l8ljro  于 2023-05-16  发布在  其他
关注(0)|答案(2)|浏览(155)

我需要创建一个组织提要来托管Azure DevOps环境中项目之间共享的nuget包。
经过几次不成功的尝试和研究,我发现创建组织提要的唯一方法是Microsoft口中的Azure DevOps API。
索赔来源:This question on VS dev community和项目范围提要上的MS文档
基本上,我只需要能够在这里执行POST:https://feeds.dev.azure.com/ {organization}/_apis/packaging/feeds?api-version=5.1-preview.1
与身体:

{
    "name": "{myfeedname}",
    "hideDeletedPackageVersions": true,
    "upstreamEnabled": true
}

当然,还有一个不记名令牌来验证我自己。这就是我困惑的地方。
最简单的方法是什么?我在Azure DevOps上通过我的计算机浏览器上的公司Microsoft AD帐户登录。在我的浏览器开发工具中,我没有看到任何可以“窃取”用于PostMan的Bearer令牌。
API docs描述了一些相关信息,但我对如何在Postman中使用它感到困惑:
安全性oauth2
类型:oauth2
流程:accessCode
授权URL:https://app.vssps.visualstudio.com/oauth2/authorize&response_type=Assertion
令牌URL:https://app.vssps.visualstudio.com/oauth2/token?client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
范围名称描述
packaging_write赠款创建和读取提要和包的能力。
下面是Postman中OAuth2的接口:

我可以看到文档中的信息是如何与字段1 - 2 - 3 - 4相关的,但是,我应该使用什么回调URL?什么证件?我的Microsoft电子邮件+来自AD的密码?
我试过了,我似乎从Postman那里得到了这个:

{"$id":"1","innerException":null,"message":"A potentially dangerous Request.Path value was detected from the client (&).","typeName":"System.Web.HttpException, System.Web","typeKey":"HttpException","errorCode":0,"eventId":0}

TLDR

如何正确地使用Postman或其他工具获取令牌,以手动执行对Azure DevOps REST API的一次性请求?

注意事项:

以下信息在这里:Unable to get Authorization code for Devops using Postman oAuth2.0,在这里引导:https://github.com/Microsoft/azure-devops-auth-samples/tree/master/OAuthWebSample,我明白我必须注册并运行整个Web应用程序。我理解的对吗?我有更简单的方法吗?

xjreopfe

xjreopfe1#

我知道我必须注册并运行整个Web应用程序。我理解的对吗?我有更简单的方法吗?
是的,你说得对。您必须注册整个Web应用程序。
作为Postman中OAuth2的接口,我们需要提供CallbackUrlClientIDClientSecret等。然后,我们检查文档Requesting an OAuth 2.0 token,我们可以知道Callback URL是:
客户端应用回调URL在auth后重定向,应该向API提供者注册
因此,我们必须在Azure DevOps(https://app.vsaex.visualstudio.com/app/register)中注册OAuth客户端应用程序,然后我们可以获得以下信息,例如:

您可以查看文档Authorize access to VSTS REST APIs with OAuth 2.0了解更多详细信息。
AFAIK,目前没有更简单的方法来获取承载令牌以向Azure DevOps API发送请求。
希望这能帮上忙。

gajydyqb

gajydyqb2#

DevOps REST API可以使用任何工具,如curl或Postman,而无需创建Applicationino。您确实需要一个令牌,可以从DevOps用户配置文件中获得,您可以在其中创建PAT令牌并将其与基本身份验证一起使用。在Postman中,请求编辑器上有一个Authorization选项卡,您可以在其中选择“Basic Auth”,并在对话框中提供您的DevOps用户名和PAT令牌。
这样,您就可以调用REST API。

相关问题