我正在运行Windows 10并制作一个脚本来处理/启动VSTS版本。
示例调用(覆盖测试的属性):
$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI = "https://mytenancy.visualstudio.com/"
$env:SYSTEM_TEAMPROJECTID = "Project1"
$env:SYSTEM_DEFINITIONID = 5
#$env:SYSTEM_ACCESSTOKEN = "mytoken" - uncomment when running locally
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0"
Write-Host "URL: $url"
$definition = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Definition = $($definition | ConvertTo-Json -Depth 100)"
"Authenticated"
此脚本在服务器上运行正常,但如果我取消注释$env:SYSTEM_ACCESSTOKEN
并在本地运行,则会出现以下错误:
Microsoft Internet Explorer \ n \ n增强的安全配置 目前已在您的环境中启用。这种增强水平 安全性阻止我们的Web集成体验显示或 表现正确。要继续您的操作,请禁用 此配置或联系您的管理员。
我正在运行Windows 10。
我尝试了很多东西,包括:
如何在本地进行身份验证?
编辑(接受以下答案)
接受的答案解决了这个问题。我认为这里的两个关键点是:
Bearer
更改为Basic
。最终代码:
$user = "[username]"
$accessToken="[token]"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$accessToken)))
$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI = "https://mytenancy.visualstudio.com/"
$env:SYSTEM_TEAMPROJECTID = "Project1"
$checkBuildUrl = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$($env:SYSTEM_TEAMPROJECTID)/_apis/build/builds/$($requestedBuildId)?api-version=2.0"
$buildStatus = Invoke-RestMethod -Uri $checkBuildUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
答案 0 :(得分:1)
创建一个新的访问令牌并引用此代码通过PowerShell调用REST API:
$user = "[anything]"
$accessToken="[access token]"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$accessToken)))
...
Invoke-RestMethod -Uri $uri -Method Post -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $bodyJson
关于增强的安全性,存在类似的问题:
Enhanced Security Error while Visual Studio Team Services Rest API