이것이 우리의 특정 상황에서 효과가 있었던 것입니다.
메모는 클라이언트 측의 기본 인증에 대한 Wikipedia에서 가져온 것 입니다. 도움을 주신 @briantist의 답변 에 감사드립니다 !
사용자 이름과 비밀번호를 단일 문자열로 결합 username:password
$user = "shaunluttin"
$pass = "super-strong-alpha-numeric-symbolic-long-password"
$pair = "${user}:${pass}"
76 자 / 줄로 제한되지 않는 경우를 제외하고 Base64의 RFC2045-MIME 변형으로 문자열을 인코딩합니다.
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
인증 값을 메서드, 공백, 인코딩 된 쌍으로 만듭니다. Method Base64String
$basicAuthValue = "Basic $base64"
헤더 만들기 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
$headers = @{ Authorization = $basicAuthValue }
웹 요청 호출
Invoke-WebRequest -uri "https://api.github.com/user" -Headers $headers
이것의 PowerShell 버전은 cURL 버전보다 더 장황합니다. 왜 그런 겁니까? @briantist는 GitHub가 RFC를 깨고 있고 PowerShell이이를 고수하고 있다고 지적했습니다. 그것은 cURL도 표준을 위반하고 있음을 의미합니까?
$pair = "$($user):$($pass)"
승인 된 답변을 확인 해야합니다 . 나는 위의를 사용하고 있었다 그것은 나에게 너무 많은 고통을 준