2017-09-08 6 views
1

저는 Windows 10을 실행하고 VSTS 빌드를 처리/시작하는 스크립트를 만듭니다.VSTS 로컬에서 실행 중 빌드 - 오류 : Microsoft Internet Explorer. 향상된 보안 구성

샘플 호출 (테스트 무시 속성) :

$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\u0026#39;s Enhanced Security Configuration is currently enabled on your environment. Th is enhanced level of security prevents our web integration experiences from displaying or performing correctly. To continue with your operation please disable this configuration or contact yo ur administrator.

나는 Windows 10을 운영하고있다.

나는 많은 것을 시도했다 :

  • 인터넷 옵션에서 가능한 한 많은 보안 기능을 해제하십시오.
  • 신선한 토큰
  • 내가 로컬주십시오 인증 할 수있는 방법 this post

에 대한 답변에 설명 된대로 base64로 문자열로 변환 보안 문자열

  • 에 토큰을 변환? (허용 대답 다음)

    편집

    허용 대답은 문제를 해결했다. 여기 두 가지 핵심 포인트라고 생각 :

    • 변환의 올바른 인코딩이 방법 (로컬)에서 실행할 때 Bearer에서 Basic에 인증을 변경 Base64
    • 에.

    최종 코드 :

    $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)} 
    
  • 답변

    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