À propos de l’authentification GitHub Actions
Si vous devez effectuer des requêtes d’API authentifiées dans un workflow GitHub Actions ou bien exécuter une action personnalisée nécessitant un jeton, utilisez le jeton intégré GITHUB_TOKEN
si possible. Toutefois, GITHUB_TOKEN
peut accéder uniquement aux ressources qui se trouvent dans le dépôt du workflow. Si vous devez accéder à des ressources supplémentaires, telles que des ressources dans une organisation ou dans un autre dépôt, vous pouvez utiliser une GitHub App. Pour plus d’informations sur les situations où il est préférable d’utiliser une GitHub App au lieu d’un personal access token, consultez « À propos de la création d’applications GitHub ».
Authentification avec une GitHub App
Si vous souhaitez utiliser une GitHub App pour effectuer des requêtes d’API authentifiées, vous devez inscrire une GitHub App, stocker les informations d’identification de l’application et installer l’application. Après cela, vous pouvez utiliser l’application pour créer un jeton d’accès d’installation avec lequel vous effectuerez les requêtes d’API authentifiées dans un workflow GitHub Actions. Vous pouvez également passer le jeton d’accès d’installation à une action personnalisée qui nécessite un jeton.
-
Inscrire une GitHub App. Accordez à l’inscription d’GitHub App les autorisations requises pour accéder aux ressources souhaitées. Pour plus d’informations, consultez « Inscription d’une application GitHub » et « Choix des autorisations pour une application GitHub ».
-
Stockez l’ID d'application de votre GitHub App en tant que variable de configuration GitHub Actions. Vous trouverez l’ID de l’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 ». Pour plus d’informations concernant le stockage des variables de configuration, consultez « Stocker des informations dans des variables ».
-
Générez une clé privée pour votre application. Stockez le contenu du fichier obtenu dans un secret. (Stockez tout le contenu du fichier, y compris
-----BEGIN RSA PRIVATE KEY-----
et-----END RSA PRIVATE KEY-----
.) Pour plus d’informations, consultez « Gestion des clés privées pour les applications GitHub ». Pour plus d’informations sur le stockage de secrets, consultez « Utilisation de secrets dans GitHub Actions ». -
Installez l’GitHub App sur votre compte d’utilisateur ou votre organisation et accordez-lui l’accès à tous les dépôts auxquels votre workflow doit accéder. Pour plus d’informations, consultez « Installation de votre propre application GitHub ».
-
Dans votre workflow GitHub Actions, créez un jeton d’accès d’installation avec lequel vous pourrez effectuer les requêtes d’API.
Pour ce faire, vous pouvez utiliser une action prédéfinie, comme celle illustrée dans l’exemple suivant. Si vous préférez ne pas utiliser d’action tierce, vous pouvez dupliquer (fork) et modifier l’action
tibdex/github-app-token
, ou écrire un script pour que le workflow crée un jeton d’installation manuellement. Pour plus d'informations, consultez « AUTOTITRE ».L’exemple de flux de travail suivant utilise l’action
tibdex/github-app-token
pour générer un jeton d’accès d’installation. Ensuite, le workflow utilise le jeton pour effectuer une requête d’API via GitHub CLI.Dans le workflow suivant, remplacez
APP_ID
par le nom de la variable de configuration dans laquelle vous avez stocké votre ID d'application. RemplacezAPP_PRIVATE_KEY
par le nom du secret où vous avez stocké la clé privée de votre application.
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub. # Elles sont fournies par un tiers et régies par # des conditions d’utilisation du service, une politique de confidentialité et un support distincts. # documentation en ligne. # GitHub recommande d’épingler les actions à un SHA de commit. # Pour obtenir une version plus récente, vous devez mettre à jour le SHA. # Vous pouvez également référencer une balise ou une branche, mais l’action peut changer sans avertissement. on: workflow_dispatch: jobs: demo_app_authentication: runs-on: ubuntu-latest steps: - name: Generate a token id: generate-token uses: tibdex/github-app-token@32691ba7c9e7063bd457bd8f2a5703138591fa58 # v1.9.0 with: app_id: ${{ vars.APP_ID }} private_key: ${{ secrets.APP_PRIVATE_KEY }} - name: Use the token env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | gh api octocat
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
# GitHub recommande d’épingler les actions à un SHA de commit.
# Pour obtenir une version plus récente, vous devez mettre à jour le SHA.
# Vous pouvez également référencer une balise ou une branche, mais l’action peut changer sans avertissement.
on:
workflow_dispatch:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: tibdex/github-app-token@32691ba7c9e7063bd457bd8f2a5703138591fa58 # v1.9.0
with:
app_id: ${{ vars.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Use the token
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh api octocat