Bien que l’API fournisse plusieurs méthodes d’authentification, nous vous recommandons vivement d’utiliser OAuth pour les applications de production. Les autres méthodes fournies sont destinées à être utilisées pour des scripts ou des tests (c’est-à-dire des cas où une OAuth complète serait exagérée). Les applications tierces qui s’appuient sur GitHub pour l’authentification ne doivent pas demander ou collecter d’informations d’identification GitHub. Au lieu de cela, elles doivent utiliser le flux web OAuth.
Authentification de base
L’API prend en charge l’authentification de base telle que définie dans la norme RFC2617 à quelques différences près.
La principale différence est que la norme RFC exige que les demandes non authentifiées reçoivent des réponses 401 Unauthorized. Dans de nombreux emplacement, cela divulguerait l’existence de données utilisateur. Au lieu de cela, l’API GitHub envoie la réponse 404 Not Found.
Cela peut occasionner 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 Authorization.
Via personal access token
Nous vous recommandons d’utiliser les fine-grained personal access token pour vous authentifier auprès de l’API GitHub.
$ curl -u USERNAME:TOKEN https://api.github.com/user
Cette approche est utile si vos outils prennent uniquement en charge une authentification de base, mais que vous souhaitez tirer parti des fonctionnalités de sécurité de personal access token.
Via un nom d’utilisateur et un mot de passe
Remarque : GitHub a cessé l’authentification par mot de passe auprès de l’API depuis le 13 novembre 2020 pour tous les comptes GitHub.com, y compris ceux sur un plan GitHub Free, GitHub Pro, GitHub Team ou GitHub Enterprise Cloud. Vous devez maintenant vous authentifier auprès de l’API GitHub avec un jeton d’API, comme un jeton d’accès OAuth, un jeton d’accès d’installation d’application GitHub ou personal access token selon ce que vous devez faire avec le jeton. Pour plus d’informations, consultez « Résolution des problèmes ».
Authentification pour SSO SAML
Remarque : les intégrations et les applications OAuth qui génèrent des jetons pour le compte d’autres sont automatiquement autorisées.
Remarque : Dans la plupart des cas, vous pouvez utiliser Authorization: Bearer ou Authorization: token pour passer un jeton. Toutefois, si vous passez un jeton web JSON (JWT), vous devez utiliser Authorization: Bearer.
Si vous utilisez l’API pour accéder à une organisation qui applique l’authentification unique SSO SAML, vous devez créer un personal access token et autoriser le jeton pour cette organisation. Visitez l’URL spécifiée dans X-GitHub-SSO afin d’autoriser le jeton pour l’organisation.
$ curl -v -H "Authorization: Bearer TOKEN" https://api.github.com/repos/octodocs-test/test
> X-GitHub-SSO: required; url=https://github.com/orgs/octodocs-test/sso?authorization_request=AZSCKtL4U8yX1H3sCQIVnVgmjmon5fWxks5YrqhJgah0b2tlbl9pZM4EuMz4
{
"message": "Resource protected by organization SAML enforcement. You must grant your personal token access to this organization.",
"documentation_url": "https://docs.github.com"
}
Lors d’une demande de données susceptibles de provenir de plusieurs organisations (par exemple demande d’une liste de problèmes créés par l’utilisateur), l’en-tête X-GitHub-SSO indique quelles organisations exigent que vous autorisiez votre personal access token :
$ curl -v -H "Authorization: Bearer TOKEN" https://api.github.com/user/issues
> X-GitHub-SSO: partial-results; organizations=21955855,20582480
La valeur organizations est une liste d’ID d’organisation séparés par des virgules pour les organisations exigeant une autorisation de votre personal access token.
Utilisation d’une authentification à deux facteurs
Quand l’authentification à deux facteurs est activée, l’authentification de base pour la plupart des points de terminaison dans l’API REST nécessite l’utilisation d’un personal access token.
Vous pouvez générer un nouveau personal access token à l’aide des GitHub developer settings. Pour plus d’informations, consultez « Création d’un personal access token pour la ligne de commande ». Ensuite, vous utilisez ces jetons pour vous authentifier à l’aide d’un jeton OAuth auprès de l’API GitHub.

