À propos des jetons d’accès d’installation
Pour vous authentifier en tant qu’installation d’application, vous devez générer un jeton d’accès d’installation. Pour plus d’informations sur l’authentification en tant qu’installation d’application, consultez « Authentification en tant qu’application GitHub ».
Note
Au lieu de générer un jeton d’accès d’installation, vous pouvez utiliser les SDK Octokit de GitHub pour vous authentifier en tant qu’application. Le Kit de développement logiciel (SDK) s’occupe de générer un jeton d’accès d’installation pour vous et régénère le jeton une fois qu’il expire. Pour plus d’informations sur l’authentification en tant qu’installation d’application, consultez « Authentification en tant qu’application GitHub ».
Vous devez conserver votre jeton d’accès d’installation en sécurité. Pour plus d’informations, consultez « Meilleures pratiques pour la création d’une application GitHub ».
Génération d’un jeton d’accès d’installation
-
Générez un jeton web JSON (JWT) pour votre application. Pour plus d’informations, consultez « Génération d’un jeton web JSON (JWT) pour une application GitHub ».
-
Obtenez l’ID de l’installation que vous souhaitez utiliser pour l’authentification.
Si vous répondez à un événement de webhook, la charge utile du webhook inclut l’ID d’installation.
Vous pouvez également utiliser l’API REST pour rechercher l’ID d’une installation de votre application. Par exemple, vous pouvez obtenir un ID d’installation avec les points de terminaison
GET /users/{username}/installation
,GET /repos/{owner}/{repo}/installation
,GET /orgs/{org}/installation
ouGET /app/installations
. Pour plus d’informations, consultez « Points de terminaison d’API REST pour GitHub Apps ».Vous pouvez également trouver l’ID d’application dans la page de paramètres de votre application. L’ID de l’application n’est pas l’ID client. Pour plus d’informations sur la navigation vers la page des paramètres pour votre GitHub App, consultez « Modification d’une inscription d’application GitHub ».
-
Envoi d’une requête d’API REST
POST
à/app/installations/INSTALLATION_ID/access_tokens
. Incluez votre jeton web JSON dans l’en-têteAuthorization
de votre requête. RemplacezINSTALLATION_ID
par l’ID de l’installation que vous souhaitez utiliser pour l’authentification.Par exemple, envoyez cette requête curl. Remplacez
INSTALLATION_ID
par l’ID de l’installation etJWT
par votre jeton web JSON :curl --request POST \ --url "http(s)://HOSTNAME/api/v3/app/installations/INSTALLATION_ID/access_tokens" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer JWT" \ --header "X-GitHub-Api-Version: 2022-11-28"
Si vous le souhaitez, vous pouvez utiliser les paramètres de corps
repositories
ourepository_ids
pour spécifier les dépôts individuels auxquels le jeton d’accès d’installation peut accéder. Si vous n’utilisez pasrepositories
ourepository_ids
pour accorder l’accès à des dépôts spécifiques, le jeton d’accès d’installation aura accès à tous les dépôts auxquels l’installation a obtenu l’accès. Le jeton d’accès d’installation ne peut pas être accordé aux référentiels auxquels l’installation n’a pas accordé l’accès.Si vous le souhaitez, utilisez le paramètre de corps
permissions
pour spécifier les autorisations dont doit disposer le jeton d’accès d’installation. Sipermissions
n’est pas spécifié, le jeton d’accès d’installation aura toutes les autorisations qui ont été accordées à l’application. Impossible d’accorder au jeton d’accès d’installation des autorisations qui n’ont pas été accordées à l’application.La réponse inclut un jeton d’accès d’installation, l’heure d’expiration du jeton, les autorisations dont dispose le jeton et les dépôts auxquels le jeton peut accéder. Le jeton d’accès d’installation expire après 1 heure.
Pour plus d’informations sur ce point de terminaison, consultez « Points de terminaison d’API REST pour GitHub Apps ».
Note
Dans la plupart des cas, vous pouvez utiliser
Authorization: Bearer
ouAuthorization: token
pour passer un jeton. Toutefois, si vous passez un jeton web JSON (JWT), vous devez utiliserAuthorization: Bearer
.