Azure DevOps API 身份验证

问题描述 投票:0回答:4

我想使用 Azure DevOps API 为我的用户创建 PAT。但我还无法进行身份验证。在 Microsoft 的this 文档中,他们声明可以使用 PAT 进行身份验证,但事实并非如此。我收到带有登录页面的 HTTP 203 响应。

PS:我正在使用 Postman 来测试 API 请求。

azure azure-devops tfs azure-pipelines azure-ad-msal
4个回答
5
投票

是的,它确实有效,只是你没有正确设置它。

查看本文档的基本身份验证。您需要对用户名密码进行 Base 64 编码,如下所示:

username:PAT
。用冒号将两者分开。


3
投票

我认为此 REST API 的安全部分具有误导性。

事实上,这个REST API无法通过PAT进行身份验证,如另一个文档中提到的:

要使用 API,您必须使用 Azure AD 令牌进行身份验证。

与其他 Azure DevOps Services API 不同,用户必须提供 Azure AD 访问令牌才能使用此 API,而不是 PAT 令牌。 Azure AD 令牌是比使用 PAT 更安全的身份验证机制。鉴于此 API 能够创建和撤销 PAT,我们希望确保仅向允许的用户提供如此强大的功能。

本文档还详细说明了如何使用此REST API,您可以参考。


1
投票

当发送带有这样的标头的请求时,这对我有用

'Authentication': 'Basic <Base-64 encoded PAT>'

在编码之前,您必须在 PAT 的开头包含

':'
(使用带填充的 Base-64)。 即使不包含用户名,也请使用冒号。

P.S 我认为在 Postman 中你不需要对 PAT 进行编码。


0
投票

我想分享如何使用 PowerShell 脚本中的个人访问令牌 (PAT) 成功连接到 Azure DevOps API。虽然这可能有点晚了,但我希望它可以帮助遇到此问题的其他人。

首先,您需要在 Azure DevOps 帐户中创建 PAT

现在,这是 PowerShell 脚本:`

定义您的个人访问令牌 (PAT)

$pat =“您的个人访问令牌”

定义 DevOps API URL

$jsonUrl =“YOUR_JSON_URL_HERE”

使用 PAT 创建标头以进行身份验证

$标题=@{ 授权 = "基本" + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($pat)")) }

使用身份验证标头发出请求

$jsonContent = Invoke-RestMethod -Uri $jsonUrl -Headers $headers

`

© www.soinside.com 2019 - 2024. All rights reserved.