azure PAT网络管理API返回203非授权信息

1dkrff03  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(161)

我正在尝试通过PAT API Management API创建Azure DevOps Personal Access Token以利用工作项API,但我收到203非授权信息错误:

下面是curl请求:

curl --location ‘https://vssps.dev.azure.com/mayankaggarwal9919/\_apis/tokens/pats?api-version=7.1-preview.1%E2%80%99 –header ‘Content-Type: application/json’ –header ‘Authorization: Basic \\\[Redacted\\\]’ –header ‘Cookie: VstsSession=%7B%22PersistentSessionId%22%3A%229e3cefcb-0bf3-42cb-b3e3-9c76748cb94d%22%2C%22PendingAuthenticationSessionId%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22CurrentAuthenticationSessionId%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22SignInState%22%3A%7B%7D%7D; X-VSS-UseRequestRouting=True’ –data ’ { “displayName”: “new_token”, “scope”: “app_token”, “validTo”: “2023-12-01T23:46:23.319Z”, “allOrgs”: true } ’

我能够通过在Azure Active Directory中注册应用程序并在Postman中点击下面提到的curl请求来生成承载令牌(需要在PAT API中传递)-

curl --location ‘https://login.microsoftonline.com/%7Btenantid%7D/oauth2/token%E2%80%99 –header ‘Content-Type: application/x-www-form-urlencoded’ –header ‘Cookie: fpc=Anwji51Th8BHmcdGaAhuKwcrrAAsAQAAAAbCo9wOAAAA; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd’ –data-urlencode ‘grant_type=client_credentials’ –data-urlencode ‘client_id={clientid}’ –data-urlencode ‘client_secret={clientsecret}’ –data-urlencode ‘resource=https://management.azure.com/%E2%80%99

我尝试将令牌以不同的格式(如API Key,Basic和Bearer)传递给PAT API API(上面共享的第一个curl请求),只是为了尝试,但所有这些都得到了相同的错误。以下是我为创建的应用授予的API权限:

应用程序的API验证这是我的应用程序的身份验证设置的样子-
应用程序身份验证设置我还尝试通过在Azure Local CLI - az account get-access-token上运行此命令来生成需要传递给PAT API的承载令牌,但在PAT API API中传递生成的令牌时仍收到相同的错误。

我能够从浏览器访问这个URL -https:dev.azure.com/mayankaggarwal9919,并且我还确保在传递的Bearer令牌中没有换行符。在我看来,这是因为缺乏一些权限,我无法弄清楚。
任何见解将高度赞赏。
我尝试了以下方法,但没有解决问题:

  • 为我创建的Active Directory应用程序提供Azure DevOps资源访问。
  • 使用Azure CLI而不是Postman生成的承载令牌(需要传递到PAT API)。
  • 已在已注册的应用程序上验证与Azure DevOps相关的所有配置文件。
  • 使用AAD应用程序生成的承载令牌,使用授权代码和范围为499 b84 ac-1321- 427 f-aa 17 - 267 ca 6975798/.default
  • 如果令牌中存在任何换行符,请检查。`
mw3dktmi

mw3dktmi1#

错误代码203表示bear令牌不正确。
在你的截图应用程序权限是好的,因为它从我这边工作.
您可以使用下面的授权请求来获取code值:

https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/authorize
?client_id=<appID>
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope= 499b84ac-1321-427f-aa17-267ca6975798/.default
&state=12345

你会得到如下代码:

如果您遇到类似AADSTS500113: No reply address is registered for the application.的错误,请转到应用程序中的身份验证选项卡,并像这样添加https://jwt.ms作为重定向URI并保存。

然后,您可以使用授权代码流生成访问令牌,方法是将范围更改为499 b84 ac-1321- 427 f-aa 17 - 267 ca 6975798/.default,并使用以下参数:

POST https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
grant_type:authorization_code
client_id: <appID>
client_secret: <secret>
scope:499b84ac-1321-427f-aa17-267ca6975798/.default
code: <paste_code_from_above_request>
redirect_uri: https://jwt.ms

使用此访问令牌,我可以在DevOps rest API中生成PAT,请注意,您可以使用版本7.0-preview.17.1-preview.1,但不能使用7.0

POST https://vssps.dev.azure.com/{organization}/_apis/tokens/pats?api-version=7.1-preview.1

您可以查看类似的link以供参考。

相关问题