Skip to main content

Authentification serveur à serveur

Utilisez un jeton d'accès d'installation de courte durée lorsqu'un service doit effectuer des demandes Copilot pour le compte d'une organisation sans informations d'identification d'un utilisateur. Dans GitHub Actions, utilisez plutôt le composant GITHUB_TOKEN intégré.

GitHub Actions

Pour les workflows d’un référentiel appartenant à l’organisation, accordez au jeton intégré l’autorisation d’effectuer des requêtes à Copilot :

permissions:
  contents: read
  copilot-requests: write

jobs:
  copilot:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: your-application
        env:
          GITHUB_TOKEN: $

La stratégie de l’organisation Autoriser l’utilisation de Copilot CLI facturée à l’organisation doit être activée. Cette approche n’a pas besoin d’une application GitHub ou d’un secret d’authentification stocké. Pour plus d’informations, consultez Utilisation de l’interface CLI Copilot dans GitHub Actions avec GITHUB_TOKEN.

Autres services et systèmes CI

Pour les services en dehors de GitHub Actions :

  1. Créez une application GitHub avec l’autorisation de dépôt Requêtes Copilot définie sur Lecture et écriture.

  2. Installez-le sur l’organisation qui doit être facturée. La vérification des autorisations Copilot actuelle nécessite l’accès à tous les référentiels.

  3. Génération d’un jeton d’accès d’installation pour une application GitHub avec un ID de référentiel et l’autorisation Copilot :

    {
      "repository_ids": [123456789],
      "permissions": {
        "copilot_requests": "write"
      }
    }
    
  4. Transmettez le jeton résultant ghs_ au runtime en tant que COPILOT_GITHUB_TOKEN.

L’organisation doit être activée pour les requêtes Copilot provenant des installations de GitHub App. Les jetons d’installation expirent après une heure.

Avertissement

Ne transmettez pas de jeton d’installation via l’option gitHubToken, github_token ou une option équivalente du SDK. Cette option concerne les jetons utilisateur. Les jetons d’installation doivent utiliser le chemin d’authentification de l’environnement d’exécution.

Configurer le runtime

Les exemples suivants supposent que le jeton créé se trouve dans INSTALLATION_TOKEN. Ils le transmettent uniquement à l’environnement d’exécution enfant et désactivent le recours aux informations d’identification utilisateur stockées.

Langages de code navigation

TypeScript
import { CopilotClient, RuntimeConnection } from "@github/copilot-sdk";

const token = process.env.INSTALLATION_TOKEN;
if (!token) throw new Error("INSTALLATION_TOKEN is required");

const client = new CopilotClient({
    connection: RuntimeConnection.forStdio(),
    env: {
        ...process.env,
        COPILOT_GITHUB_TOKEN: token,
    },
    useLoggedInUser: false,
});

Pour la FFI dans le processus, définissez COPILOT_GITHUB_TOKEN dans l’environnement hôte avant de charger l’environnement d’exécution ; les options d’environnement propres à chaque client ne sont pas prises en charge. Pour un URI d’exécution existant, définissez-le sur ce processus d’exécution.

Jetons d’actualisation

Générez un nouveau jeton d'installation avant que le jeton actuel n'expire. Pour un processus enfant, redémarrez le client SDK dans le nouvel environnement. Pour un runtime in-process ou existant, redémarrez le runtime hôte avec le nouveau jeton.

Billing

L’utilisation est attribuée et facturée au compte propriétaire de l’installation de l’application GitHub. Utilisez une installation pour une organisation pour la facturation de l’organisation ; une installation pour un compte utilisateur attribue l’utilisation à cet utilisateur.

Résolution des problèmes

SymptômeVérifier
401 UnauthorizedVérifiez que l’organisation prend en charge l’authentification d’installation de l’application GitHub pour Copilot.
403 Resource not accessible by integration ou une erreur mentionnant les informations utilisateurVérifiez que le jeton d’installation se trouve dans COPILOT_GITHUB_TOKEN, et non l’option de jeton explicite du Kit de développement logiciel (SDK).
403 Forbiddenà partir de l’API CopilotVérifiez que la demande de jeton contient repository_ids et copilot_requests: write.
403 Forbidden avec la demande de jeton requiseVérifiez que l’installation de l’application a accès à Tous les dépôts, puis générez un nouveau jeton.
Le modèle demandé n’est pas disponibleVérifiez que la stratégie de Copilot de l'organisation autorise le modèle et le runtime groupé le prend en charge.
Compte incorrect facturéVérifiez que l’installation appartient à l’organisation prévue.

Lectures complémentaires