J'assume ici l'authentification de base.
$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred
Vous pouvez obtenir vos informations d'identification par d'autres moyens ( Import-Clixml
, etc.), mais il doit s'agir d'un [PSCredential]
objet.
Modifier en fonction des commentaires:
GitHub rompt la RFC comme ils l'expliquent dans le lien que vous avez fourni :
L'API prend en charge l'authentification de base telle que définie dans la RFC2617 avec quelques légères différences. La principale différence est que la RFC exige que les demandes non authentifiées reçoivent une réponse avec 401 réponses non autorisées. Dans de nombreux endroits, cela révélerait l'existence de données utilisateur. Au lieu de cela, l'API GitHub répond avec 404 Not Found. Cela peut entraîner des problèmes pour les bibliothèques HTTP qui supposent une réponse 401 Unauthorized. La solution consiste à créer manuellement l'en-tête d'autorisation.
À Invoke-WebRequest
ma connaissance, Powershell attend une réponse 401 avant d'envoyer les informations d'identification, et comme GitHub n'en fournit jamais une, vos informations d'identification ne seront jamais envoyées.
Construire manuellement les en-têtes
Au lieu de cela, vous devrez créer vous-même les en-têtes d'authentification de base.
L'authentification de base prend une chaîne composée du nom d'utilisateur et du mot de passe séparés par deux user:pass
- points , puis envoie le résultat encodé en Base64.
Un code comme celui-ci devrait fonctionner:
$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
Vous pouvez combiner une partie de la concaténation de chaînes, mais je voulais la casser pour la rendre plus claire.
$pair = "$($user):$($pass)"
Vérifiez la réponse approuvée. J'utilisais ce qui précède et cela m'a donné trop de douleur