Skip to main content

Autenticación

El SDK de GitHub Copilot admite varios métodos de autenticación para ajustarse a diferentes casos de uso. Elija el método que mejor coincida con el escenario de implementación.

Métodos de autenticación

MétodoCaso de usoSe requiere una suscripción a Copilot
Usuario de GitHub que ha iniciado sesiónAplicaciones interactivas en las que los usuarios inician sesión con GitHub
OAuth GitHub AppAplicaciones que actúan en nombre de los usuarios a través de OAuth
Variables de entornoCI/CD, automatización, servidor a servidor
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:

  1. El usuario ejecuta copilot CLI e inicia sesión a través de GitHub OAuth
  2. Las credenciales se almacenan de forma segura en la cadena de claves del sistema
  3. El SDK usa automáticamente las credenciales almacenadas

Configuración del 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();

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:

  1. El usuario autoriza la aplicación OAuth de GitHub
  2. La aplicación recibe un token de acceso de usuario (gho_ o ghu_ prefijo)
  3. Pase el token al SDK mediante la opción gitHubToken

Configuración del 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();

Tipos de token admitidos:

  • gho_ - Tokens de acceso de usuario de OAuth
  • ghu_: tokens de acceso de usuario de GitHub App
  • github_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):

  1. COPILOT_GITHUB_TOKEN: recomendado para el uso explícito de Copilot
  2. GH_TOKEN - Compatible con GitHub CLI
  3. GITHUB_TOKEN - Compatible con Acciones de GitHub

Cómo funciona:

  1. Establecer una de las variables de entorno admitidas con un token válido
  2. 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:

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()

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:

  1. Explícito gitHubToken - Token pasado directamente al constructor del SDK
  2. Clave HMAC - CAPI_HMAC_KEY o COPILOT_HMAC_KEY variables de entorno
  3. Token de API directa - GITHUB_COPILOT_API_TOKEN con COPILOT_API_URL
  4. Tokens de variables de entorno - COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN
  5. Credenciales de OAuth almacenadas : desde el inicio de sesión anterior copilot de la CLI
  6. GitHub CLI - gh auth credenciales

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 :

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();

Pasos siguientes