Skip to main content

Authentification

Le sdk GitHub Copilot prend en charge plusieurs méthodes d’authentification pour répondre à différents cas d’usage. Choisissez la méthode qui correspond le mieux à votre scénario de déploiement.

Méthodes d’authentification

MéthodeCas d’usageabonnement Copilot requis
GitHub Utilisateur connectéApplications interactives où les utilisateurs se connectent avec GitHubOui
application OAuth GitHubApplications agissant pour le compte des utilisateurs via OAuthOui
Variables d’environnementCI/CD, automatisation, serveur à serveurOui
BYOK (bring your own key)Utilisation de vos propres clés API (Azure AI Foundry, OpenAI, etc.)Non

Utilisateur connecté à GitHub

Il s’agit de la méthode d’authentification par défaut lors de l’exécution interactive de l’interface CLI Copilot. Les utilisateurs s’authentifient via le flux d’appareils OAuth de GitHub, et le SDK utilise leurs identifiants enregistrés.

Fonctionnement :

  1. L’utilisateur exécute copilot CLI et se connecte via GitHub OAuth
  2. Les informations d’identification sont stockées de manière sécurisée dans le trousseau de clés du système
  3. Le Kit de développement logiciel (SDK) utilise automatiquement les informations d’identification stockées

Configuration du Kit de développement logiciel (SDK) :

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

// Default: uses logged-in user credentials
const client = new CopilotClient();
Python
from copilot import CopilotClient

# Default: uses logged-in user credentials
client = CopilotClient()
await client.start()
Go
package main

import copilot "github.com/github/copilot-sdk/go"

func main() {
    // Default: uses logged-in user credentials
    client := copilot.NewClient(nil)
    _ = client
}
import copilot "github.com/github/copilot-sdk/go"

// Default: uses logged-in user credentials
client := copilot.NewClient(nil)
.NET
using GitHub.Copilot;

// Default: uses logged-in user credentials
await using var client = new CopilotClient();
Java
import com.github.copilot.sdk.CopilotClient;

// Default: uses logged-in user credentials
var client = new CopilotClient();
client.start().get();

Quand utiliser :

  • Applications de bureau où les utilisateurs interagissent directement
  • les environnements de développement et de test ;
  • Tout scénario dans lequel un utilisateur peut se connecter de manière interactive

Application OAuth de GitHub

Utilisez une application OAuth GitHub pour authentifier les utilisateurs via votre application et transmettre leurs informations d’identification au Kit de développement logiciel (SDK). Cela permet à votre application d’effectuer des requêtes à l’API Copilot pour le compte des utilisateurs qui autorisent votre application.

Fonctionnement :

  1. L’utilisateur autorise votre application OAuth GitHub
  2. Votre application reçoit un jeton d’accès utilisateur (gho_ ou ghu_ préfixe)
  3. Transmettez le jeton au kit de développement logiciel (SDK) via l’option gitHubToken

Configuration du Kit de développement logiciel (SDK) :

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

const client = new CopilotClient({
    gitHubToken: userAccessToken,  // Token from OAuth flow
    useLoggedInUser: false,        // Don't use stored CLI credentials
});
Python
from copilot import CopilotClient

client = CopilotClient({
    "github_token": user_access_token,  # Token from OAuth flow
    "use_logged_in_user": False,        # Don't use stored CLI credentials
})
await client.start()
Go
package main

import copilot "github.com/github/copilot-sdk/go"

func main() {
    userAccessToken := "token"
    client := copilot.NewClient(&copilot.ClientOptions{
        GitHubToken:     userAccessToken,
        UseLoggedInUser: copilot.Bool(false),
    })
    _ = client
}
import copilot "github.com/github/copilot-sdk/go"

client := copilot.NewClient(&copilot.ClientOptions{
    GithubToken:     userAccessToken,   // Token from OAuth flow
    UseLoggedInUser: copilot.Bool(false), // Don't use stored CLI credentials
})
.NET
using GitHub.Copilot;

var userAccessToken = "token";
await using var client = new CopilotClient(new CopilotClientOptions
{
    GitHubToken = userAccessToken,
    UseLoggedInUser = false,
});
using GitHub.Copilot;

await using var client = new CopilotClient(new CopilotClientOptions
{
    GitHubToken = userAccessToken,     // Token from OAuth flow
    UseLoggedInUser = false,           // Don't use stored CLI credentials
});
Java
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;

var client = new CopilotClient(new CopilotClientOptions()
    .setGitHubToken(userAccessToken)  // Token from OAuth flow
    .setUseLoggedInUser(false)        // Don't use stored CLI credentials
);
client.start().get();

Types de jetons pris en charge :

  • gho_ - Jetons d’accès utilisateur OAuth
  • ghu_ - jetons d’accès utilisateur de l’application GitHub
  • github_pat_ - Jetons d’accès personnels à granularité fine

Non pris en charge :

  • ghp_ - Jetons d’accès personnels classiques (déconseillés)

Quand utiliser :

  • Applications web où les utilisateurs se connectent via GitHub
  • Applications SaaS reposant sur Copilot
  • Toute application multi-utilisateur dans laquelle vous devez effectuer des demandes pour le compte de différents utilisateurs

Variables d’environnement

Pour les scénarios d’automatisation, ci/CD et serveur à serveur, vous pouvez vous authentifier à l’aide de variables d’environnement.

Variables d’environnement prises en charge (par ordre de priorité) :

  1. COPILOT_GITHUB_TOKEN - Recommandé pour un usage explicite de Copilot
  2. GH_TOKEN - compatible avec GitHub CLI
  3. GITHUB_TOKEN - compatible avec GitHub Actions

Fonctionnement :

  1. Définir l’une des variables d’environnement prises en charge avec un jeton valide
  2. Le Kit de développement logiciel (SDK) détecte et utilise automatiquement le jeton

Configuration du Kit de développement logiciel (SDK) :

Aucune modification du code n’est nécessaire : le SDK détecte automatiquement les variables d’environnement :

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

// Token is read from environment variable automatically
const client = new CopilotClient();
Python
from copilot import CopilotClient

# Token is read from environment variable automatically
client = CopilotClient()
await client.start()

Quand utiliser :

  • Pipelines CI/CD (GitHub Actions, Jenkins, etc.)
  • Tests automatisés
  • Applications côté serveur avec des comptes de service
  • Développement lorsque vous ne souhaitez pas utiliser la connexion interactive

BYOK (apportez votre propre clé)

BYOK vous permet d’utiliser vos propres clés API à partir de fournisseurs de modèles tels que Azure AI Foundry, OpenAI ou Anthropic. Cela contourne entièrement l’authentification GitHub Copilot.

Principaux avantages :

  • Aucun abonnement GitHub Copilot requis
  • Utiliser des déploiements de modèles d’entreprise
  • Facturation directe avec votre fournisseur de modèles
  • Prise en charge pour Azure AI Foundry, OpenAI, Anthropic et les points de terminaison compatibles OpenAI

Pour plus d’informations, consultez autoTITLE, notamment :

  • Configuration d’Azure AI Foundry
  • Options de configuration du fournisseur
  • Limitations et considérations
  • Exemples de code complets

Priorité d’authentification

Lorsque plusieurs méthodes d’authentification sont disponibles, le SDK les utilise dans cet ordre de priorité :

  1. Explicite gitHubToken - Jeton transmis directement au constructeur sdk
  2. clé HMAC - CAPI_HMAC_KEY ou COPILOT_HMAC_KEY variables d’environnement
  3. Jeton d’API direct - GITHUB_COPILOT_API_TOKEN avec COPILOT_API_URL
  4. Jetons de variable d’environnement - COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN
  5. Informations d’identification OAuth stockées - À partir de la connexion CLI précédente copilot
  6. GitHub CLI - gh auth informations d’identification

Désactivation de la connexion automatique

Pour empêcher le SDK d’utiliser automatiquement les informations d’identification stockées ou gh l’authentification CLI, utilisez l’option useLoggedInUser: false suivante :

TypeScript
const client = new CopilotClient({
    useLoggedInUser: false,  // Only use explicit tokens
});
Python
from copilot import CopilotClient

client = CopilotClient({
    "use_logged_in_user": False,
})
client = CopilotClient({
    "use_logged_in_user": False,  # Only use explicit tokens
})
Go
package main

import copilot "github.com/github/copilot-sdk/go"

func main() {
    client := copilot.NewClient(&copilot.ClientOptions{
        UseLoggedInUser: copilot.Bool(false),
    })
    _ = client
}
client := copilot.NewClient(&copilot.ClientOptions{
    UseLoggedInUser: copilot.Bool(false),  // Only use explicit tokens
})
.NET
await using var client = new CopilotClient(new CopilotClientOptions
{
    UseLoggedInUser = false,  // Only use explicit tokens
});
Java
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;

var client = new CopilotClient(new CopilotClientOptions()
    .setUseLoggedInUser(false)  // Only use explicit tokens
);
client.start().get();

Étapes suivantes