使用基本授权(用户名和密码)时出现 VSTS REST API 错误

Posted

技术标签:

【中文标题】使用基本授权(用户名和密码)时出现 VSTS REST API 错误【英文标题】:VSTS REST API Error when using Basic Authorization (username & password) 【发布时间】:2019-01-04 15:57:15 【问题描述】:

使用邮递员工具,我生成了一个带有标头的不记名令牌,带有用户名和密码的基本授权以及正文。

当我通过 VSTS 中的 Web 服务请求尝试相同的操作时遇到错误。

基本授权提供用户名密码的语法是什么?

【问题讨论】:

您声明您收到“错误”。 什么错误是什么? 看一下规范:tools.ietf.org/html/rfc7617 【参考方案1】:

如果您有 PAT(个人访问令牌),您可以将其用于基本身份验证,密码字段中没有用户名和 PAT。

【讨论】:

【参考方案2】:

您可以尝试以下示例,使用具有基本授权的用户名和密码来调用 REST API:

C#:

var httpClient = new HttpClient();
var byteArray = Encoding.ASCII.GetBytes(string.Format("0:1", "Domain\\username", "password"));
httpClient.DefaultRequestHeaders.Authorization
                    = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var response = await httpClient.GetStringAsync("https://account.visualstudio.com/_apis/git/repositories");
Console.WriteLine(response);

PowerShell:

Param(
   [string]$collectionurl = "https://account.visualstudio.com",
   [string]$project = "ProjectName",
   [string]$user = "username",
   [string]$token = "Password/PAT"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("0:1" -f $user,$token)))

$baseUrl = "$collectionurl/$project/_apis/wit/reporting/workitemrevisions?includeLatestOnly=true&api-version=5.0-preview.2"         
$response = (Invoke-RestMethod -Uri $baseUrl -Method Get -Headers @Authorization=("Basic 0" -f $base64AuthInfo)).values

有关身份验证的更多信息,请参阅Choosing the right authentication mechanism。

【讨论】:

他想知道使用 Postman 工具,而不是使用 C#。标签没有 C#。

以上是关于使用基本授权(用户名和密码)时出现 VSTS REST API 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 laravel Sanctum 和 api 令牌身份验证获取用户时出现 401(未经授权)[重复]

使用 Fabric SDK 从 Twitter 授权中取消时出现授权错误

当用户在 Blazor Webassembly 身份验证和授权中具有多个角色时出现问题?

在春季实施授权代码授权时出现的问题

XMPPFramework - 删除注册用户帐户时出现“未授权”错误

尝试访问 REST API 时出现 401(未授权)