Méthodes d’authentification
| Méthode | Cas d’usage | abonnement Copilot requis |
|---|---|---|
| GitHub Utilisateur connecté | Applications interactives où les utilisateurs se connectent avec GitHub | Oui |
| application OAuth GitHub | Applications agissant pour le compte des utilisateurs via OAuth | Oui |
| Variables d’environnement | CI/CD, automatisation, serveur à serveur | Oui |
| 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 :
- L’utilisateur exécute
copilotCLI et se connecte via GitHub OAuth - Les informations d’identification sont stockées de manière sécurisée dans le trousseau de clés du système
- Le Kit de développement logiciel (SDK) utilise automatiquement les informations d’identification stockées
Configuration du Kit de développement logiciel (SDK) :
import { CopilotClient } from "@github/copilot-sdk";
// Default: uses logged-in user credentials
const client = new CopilotClient();
from copilot import CopilotClient
# Default: uses logged-in user credentials
client = CopilotClient()
await client.start()
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)
using GitHub.Copilot;
// Default: uses logged-in user credentials
await using var client = new CopilotClient();
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 :
- L’utilisateur autorise votre application OAuth GitHub
- Votre application reçoit un jeton d’accès utilisateur (
gho_oughu_préfixe) - Transmettez le jeton au kit de développement logiciel (SDK) via l’option
gitHubToken
Configuration du Kit de développement logiciel (SDK) :
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient({
gitHubToken: userAccessToken, // Token from OAuth flow
useLoggedInUser: false, // Don't use stored CLI credentials
});
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()
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
})
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
});
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 OAuthghu_- jetons d’accès utilisateur de l’application GitHubgithub_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é) :
COPILOT_GITHUB_TOKEN- Recommandé pour un usage explicite de CopilotGH_TOKEN- compatible avec GitHub CLIGITHUB_TOKEN- compatible avec GitHub Actions
Fonctionnement :
- Définir l’une des variables d’environnement prises en charge avec un jeton valide
- 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 :
import { CopilotClient } from "@github/copilot-sdk";
// Token is read from environment variable automatically
const client = new CopilotClient();
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é :
- Explicite
gitHubToken- Jeton transmis directement au constructeur sdk - clé HMAC -
CAPI_HMAC_KEYouCOPILOT_HMAC_KEYvariables d’environnement - Jeton d’API direct -
GITHUB_COPILOT_API_TOKENavecCOPILOT_API_URL - Jetons de variable d’environnement -
COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKEN - Informations d’identification OAuth stockées - À partir de la connexion CLI précédente
copilot - GitHub CLI -
gh authinformations 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 :
const client = new CopilotClient({
useLoggedInUser: false, // Only use explicit tokens
});
from copilot import CopilotClient
client = CopilotClient({
"use_logged_in_user": False,
})
client = CopilotClient({
"use_logged_in_user": False, # Only use explicit tokens
})
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
})
await using var client = new CopilotClient(new CopilotClientOptions
{
UseLoggedInUser = false, // Only use explicit tokens
});
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
- BYOK (bring your own key) - Découvrez comment utiliser vos propres clés API
- Créez votre première application avec Copilot - Créez votre première application basée sur Copilot
- Using MCP servers with the GitHub Copilot SDK - Se connecter à des outils externes