Métodos de autenticación
| Método | Caso de uso | Se requiere una suscripción a Copilot |
|---|---|---|
| Usuario de GitHub que ha iniciado sesión | Aplicaciones interactivas en las que los usuarios inician sesión con GitHub | Sí |
| OAuth GitHub App | Aplicaciones que actúan en nombre de los usuarios a través de OAuth | Sí |
| Variables de entorno | CI/CD, automatización, servidor a servidor | Sí |
| BYOK (bring your own key) | Uso de sus propias claves de API (Fundición de IA de Azure, OpenAI, etc.) | No |
Usuario que ha iniciado sesión en GitHub
Este es el método de autenticación predeterminado al ejecutar la CLI de Copilot de forma interactiva. Los usuarios se autentican mediante el flujo de dispositivos de OAuth de GitHub, y el SDK utiliza sus credenciales almacenadas.
Cómo funciona:
- El usuario ejecuta
copilotCLI e inicia sesión a través de GitHub OAuth - Las credenciales se almacenan de forma segura en la cadena de claves del sistema
- El SDK usa automáticamente las credenciales almacenadas
Configuración del 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();
Cuándo usar:
- Aplicaciones de escritorio en las que los usuarios interactúan directamente
- Entornos de desarrollo y pruebas
- Cualquier escenario en el que un usuario pueda iniciar sesión de forma interactiva
Aplicación de GitHub de OAuth
Use una aplicación de OAuth GitHub para autenticar a los usuarios a través de la aplicación y pasar sus credenciales al SDK. Esto permite a la aplicación realizar solicitudes de API Copilot en nombre de los usuarios que autorizan la aplicación.
Cómo funciona:
- El usuario autoriza la aplicación OAuth de GitHub
- La aplicación recibe un token de acceso de usuario (
gho_oghu_prefijo) - Pase el token al SDK mediante la opción
gitHubToken
Configuración del 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();
Tipos de token admitidos:
gho_- Tokens de acceso de usuario de OAuthghu_: tokens de acceso de usuario de GitHub Appgithub_pat_- Tokens de acceso personal específicos
No se admite:
ghp_- Tokens de acceso personal clásicos (en desuso)
Cuándo usar:
- Aplicaciones web en las que los usuarios inician sesión a través de GitHub
- Aplicaciones SaaS basadas en Copilot
- Cualquier aplicación multiusuario en la que necesite realizar solicitudes en nombre de distintos usuarios
Variables de entorno
Para la automatización, las canalizaciones de CI/CD y los escenarios de servidor a servidor, puede autenticarse mediante variables de entorno.
Variables de entorno admitidas (en orden de prioridad):
COPILOT_GITHUB_TOKEN: recomendado para el uso explícito de CopilotGH_TOKEN- Compatible con GitHub CLIGITHUB_TOKEN- Compatible con Acciones de GitHub
Cómo funciona:
- Establecer una de las variables de entorno admitidas con un token válido
- El SDK detecta y usa automáticamente el token.
Configuración del SDK:
No se necesitan cambios de código: el SDK detecta automáticamente las variables de entorno:
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()
Cuándo usar:
- pipelines de CI/CD (Acciones de GitHub, Jenkins, etc.)
- Pruebas automatizadas
- Aplicaciones del lado servidor con cuentas de servicio
- Desarrollo cuando no desea usar el inicio de sesión interactivo
BYOK (traiga su propia clave)
BYOK permite usar sus propias claves de API de proveedores de modelos como Fundición de IA de Azure, OpenAI o Anthropic. Esto elude por completo la autenticación de GitHub Copilot.
Ventajas clave:
- No se requiere ninguna suscripción GitHub Copilot
- Uso de implementaciones de modelos empresariales
- Facturación directa con su proveedor de modelos
- Compatibilidad con puntos de conexión compatibles con Fundición de IA de Azure, OpenAI, Anthropic y OpenAI
Consulte BYOK (bring your own key) para obtener detalles completos, entre los que se incluyen:
- Configuración de Fundición de IA de Azure
- Opciones de configuración del proveedor
- Limitaciones y consideraciones
- Ejemplos de código completos
Prioridad de autenticación
Cuando hay varios métodos de autenticación disponibles, el SDK los usa en este orden de prioridad:
- Explícito
gitHubToken- Token pasado directamente al constructor del SDK - Clave HMAC -
CAPI_HMAC_KEYoCOPILOT_HMAC_KEYvariables de entorno - Token de API directa -
GITHUB_COPILOT_API_TOKENconCOPILOT_API_URL - Tokens de variables de entorno -
COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKEN - Credenciales de OAuth almacenadas : desde el inicio de sesión anterior
copilotde la CLI - GitHub CLI -
gh authcredenciales
Deshabilitación del inicio de sesión automático
Para evitar que el SDK use automáticamente las credenciales almacenadas o gh la autenticación de la CLI, use la useLoggedInUser: false opción :
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();
Pasos siguientes
- BYOK (bring your own key) : aprenda a usar sus propias claves de API
- Crea tu primera aplicación con tecnología Copilot: compile la primera aplicación con tecnología de Copilot
- Using MCP servers with the GitHub Copilot SDK : conexión a herramientas externas