Ich gehe hier von einer Standardauthentifizierung aus.
$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred
Sie können Ihren Berechtigungsnachweis auf andere Weise ( Import-Clixml
usw.) erhalten, es muss sich jedoch um ein [PSCredential]
Objekt handeln.
Bearbeiten basierend auf Kommentaren:
GitHub bricht RFC, wie in dem von Ihnen angegebenen Link erläutert :
Die API unterstützt die in RFC2617 definierte Standardauthentifizierung mit einigen geringfügigen Unterschieden. Der Hauptunterschied besteht darin, dass für den RFC nicht authentifizierte Anforderungen mit 401 nicht autorisierten Antworten beantwortet werden müssen. An vielen Stellen würde dies das Vorhandensein von Benutzerdaten offenlegen. Stattdessen antwortet die GitHub-API mit 404 Not Found. Dies kann Probleme für HTTP-Bibliotheken verursachen, die eine nicht autorisierte Antwort von 401 annehmen. Die Lösung besteht darin, den Autorisierungsheader manuell zu erstellen.
Powershell's Invoke-WebRequest
wartet meines Wissens auf eine 401-Antwort, bevor die Anmeldeinformationen gesendet werden. Da GitHub niemals eine bereitstellt, werden Ihre Anmeldeinformationen niemals gesendet.
Erstellen Sie die Header manuell
Stattdessen müssen Sie die grundlegenden Auth-Header selbst erstellen.
Bei der Standardauthentifizierung wird eine Zeichenfolge verwendet, die aus dem durch einen Doppelpunkt getrennten Benutzernamen und dem Kennwort besteht, user:pass
und anschließend das Base64-codierte Ergebnis gesendet.
Code wie dieser sollte funktionieren:
$user = 'user'
$pass = 'pass'
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
Authorization = $basicAuthValue
}
Invoke-WebRequest -Uri 'https://whatever' -Headers $Headers
Sie könnten einen Teil der Zeichenfolgenverkettung kombinieren, aber ich wollte sie ausbrechen, um sie klarer zu machen.
$pair = "$($user):$($pass)"
Überprüfen Sie die genehmigte Antwort. Ich benutzte das oben genannte und es gab mir zu viel Schmerz