Utiliser Invoke-WebRequest avec un nom d’utilisateur et un mot de passe pour l’authentification basique sur l’API GitHub
Je suppose ici une authentification basique.
`$cred = Get-Credential
Invoke-WebRequest -Uri ‘https://whatever’ -Credential $cred
Vous pouvez obtenir vos identifiants par d'autres moyens (`Import-Clixml`, etc.), mais il doit s'agir d'un objet `[PSCredential]`.
Modification basée sur les commentaires :
GitHub ne respecte pas le RFC comme ils l'expliquent dans le [lien que vous avez fourni](https://developer.github.com/v3/auth/) :
L'API prend en charge l'authentification basique telle que définie dans le RFC2617 avec quelques
légères différences. La principale différence est que le RFC exige
que les requêtes non authentifiées reçoivent des réponses 401 Unauthorized.
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
poser des problèmes pour les bibliothèques HTTP qui s'attendent à une réponse
401 Unauthorized. La solution est de construire manuellement l'en-tête Authorization.
Le cmdlet `Invoke-WebRequest` de Powershell, à ma connaissance, attend une réponse 401 avant d'envoyer les identifiants, et puisque GitHub n'en fournit jamais, vos identifiants ne seront jamais envoyés.
Construire les en-têtes manuellement
À la place, vous devrez créer vous-même les en-têtes d'authentification basique.
L'authentification basique prend une chaîne composée du nom d'utilisateur et du mot de passe séparés par deux-points `user:pass` 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 pourriez combiner certaines concaténations de chaînes mais j’ai voulu les détailler pour plus de clarté.