{"meta":{"title":"Autenticación","intro":"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.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/how-tos","title":"Procedimientos"},{"href":"/es/copilot/how-tos/copilot-sdk","title":"SDK de Copilot"},{"href":"/es/copilot/how-tos/copilot-sdk/auth","title":"Autenticación"},{"href":"/es/copilot/how-tos/copilot-sdk/auth/authenticate","title":"Autenticación"}],"documentType":"article"},"body":"# Autenticación\n\nEl 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.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Métodos de autenticación\n\n| Método                                                                                               | Caso de uso                                                                              | Se requiere una suscripción a Copilot                                      |\n| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| [Usuario de GitHub que ha iniciado sesión](#github-signed-in-user)                                   | Aplicaciones interactivas en las que los usuarios inician sesión con GitHub              | Sí                                                                         |\n| [Aplicación OAuth de GitHub](#github-oauth-app)                                                      | Aplicaciones que actúan en nombre de los usuarios a través de OAuth                      | Sí                                                                         |\n| [Variables de entorno](#environment-variables)                                                       | CI/CD, automatización, servidor a servidor                                               | Sí                                                                         |\n| [Autenticación de servidor a servidor](/es/copilot/how-tos/copilot-sdk/auth/server-to-server-tokens) | Automatización con atributos de la organización y facturación directa de la organización | No hay suscripción de usuario; se requiere una política de la organización |\n| [BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok)                           | Uso de sus propias claves de API (Microsoft Foundry, OpenAI, etc.)                       | No                                                                         |\n\n## Usuario que ha iniciado sesión en GitHub\n\nEste 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.\n\n**Cómo funciona:**\n\n1. El usuario ejecuta `copilot` CLI e inicia sesión a través de GitHub OAuth\n2. Las credenciales se almacenan de forma segura en la cadena de claves del sistema\n3. El SDK usa automáticamente las credenciales almacenadas\n\n**Configuración del SDK:**\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nusing GitHub.Copilot;\n\n// Default: uses logged-in user credentials\nawait using CopilotClient client = new();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n```golang\nimport copilot \"github.com/github/copilot-sdk/go\"\n\n// Default: uses logged-in user credentials\nclient := copilot.NewClient(nil)\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n```java\nimport com.github.copilot.CopilotClient;\n\n// Default: uses logged-in user credentials\nvar client = new CopilotClient();\nclient.start().get();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\n\n# Default: uses logged-in user credentials\nclient = CopilotClient()\nawait client.start()\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"rust\" data-label=\"Rust\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Rust</div>\n\n```rust\nuse github_copilot_sdk::{Client, ClientOptions};\n\n// Default: uses logged-in user credentials\nlet client = Client::start(ClientOptions::default()).await?;\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\n// Default: uses logged-in user credentials\nconst client = new CopilotClient();\n```\n\n</div>\n\n</div>\n\n**Cuándo usar:**\n\n* Aplicaciones de escritorio en las que los usuarios interactúan directamente\n* Entornos de desarrollo y pruebas\n* Cualquier escenario en el que un usuario pueda iniciar sesión de forma interactiva\n\n## Aplicación OAuth de GitHub\n\nUse 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.\n\n**Cómo funciona:**\n\n1. El usuario autoriza la aplicación OAuth de GitHub\n2. La aplicación recibe un token de acceso de usuario (`gho_` o `ghu_` prefijo)\n3. Pasar el token al SDK a través de su configuración de cliente\n\n**Configuración del SDK:**\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nusing GitHub.Copilot;\n\nawait using var client = new CopilotClient(new CopilotClientOptions\n{\n    GitHubToken = userAccessToken,     // Token from OAuth flow\n    UseLoggedInUser = false,           // Don't use stored CLI credentials\n});\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n```golang\nimport copilot \"github.com/github/copilot-sdk/go\"\n\nclient := copilot.NewClient(&copilot.ClientOptions{\n    GitHubToken:       userAccessToken,      // Token from OAuth flow\n    UseLoggedInUser:   copilot.Bool(false),  // Don't use stored CLI credentials\n})\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n<!-- docs-validate: skip -->\n\n```java\nimport com.github.copilot.CopilotClient;\nimport com.github.copilot.rpc.*;\n\nvar client = new CopilotClient(new CopilotClientOptions()\n    .setGitHubToken(userAccessToken)  // Token from OAuth flow\n    .setUseLoggedInUser(false)        // Don't use stored CLI credentials\n);\nclient.start().get();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\n\nclient = CopilotClient({\n    \"github_token\": user_access_token,  # Token from OAuth flow\n    \"use_logged_in_user\": False,        # Don't use stored CLI credentials\n})\nawait client.start()\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"rust\" data-label=\"Rust\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Rust</div>\n\n```rust\nuse github_copilot_sdk::{Client, ClientOptions};\n\nlet client = Client::start(\n    ClientOptions::default()\n        .with_github_token(user_access_token)\n        .with_use_logged_in_user(false),\n).await?;\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient({\n    gitHubToken: userAccessToken,  // Token from OAuth flow\n    useLoggedInUser: false,        // Don't use stored CLI credentials\n});\n```\n\n</div>\n\n</div>\n\n**Tipos de token admitidos:**\n\n* `gho_` - Tokens de acceso de usuario de OAuth\n* `ghu_`: tokens de acceso de usuario de GitHub App\n* `github_pat_` - Tokens de acceso personal específico\n\n**No se admite:**\n\n* `ghp_` - Tokens de acceso personal clásicos (en desuso)\n\n**Cuándo usar:**\n\n* Aplicaciones web en las que los usuarios inician sesión a través de GitHub\n* Aplicaciones SaaS basadas en Copilot\n* Cualquier aplicación multiusuario en la que necesite realizar solicitudes en nombre de distintos usuarios\n\nPara obtener más información, vea [Configuración de OAuth de GitHub](/es/copilot/how-tos/copilot-sdk/setup/github-oauth).\n\n## Variables de entorno\n\nPara la automatización, las canalizaciones de CI/CD y los escenarios de servidor a servidor, puede autenticarse mediante variables de entorno.\n\nPara la automatización con atributos de la organización que no deben usar el token de acceso personal de un usuario, consulte [Autenticación de servidor a servidor](/es/copilot/how-tos/copilot-sdk/auth/server-to-server-tokens).\n\n**Variables de entorno admitidas (en orden de prioridad):**\n\n1. `COPILOT_GITHUB_TOKEN`: recomendado para el uso explícito de Copilot\n2. `GH_TOKEN` - Compatible con GitHub CLI\n3. `GITHUB_TOKEN` - Compatible con Acciones de GitHub\n\n**Cómo funciona:**\n\n1. Establecer una de las variables de entorno admitidas con un token válido\n2. El SDK detecta y usa automáticamente el token.\n\n**Configuración del SDK:**\n\nNo se necesitan cambios de código: el SDK detecta automáticamente las variables de entorno:\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nusing GitHub.Copilot;\n\n// Token is read from environment variable automatically\nawait using CopilotClient client = new();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n```golang\nimport copilot \"github.com/github/copilot-sdk/go\"\n\n// Token is read from environment variable automatically\nclient := copilot.NewClient(nil)\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n```java\nimport com.github.copilot.CopilotClient;\n\n// Token is read from environment variable automatically\nvar client = new CopilotClient();\nclient.start().get();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\n\n# Token is read from environment variable automatically\nclient = CopilotClient()\nawait client.start()\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"rust\" data-label=\"Rust\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Rust</div>\n\n```rust\nuse github_copilot_sdk::{Client, ClientOptions};\n\n// Token is read from environment variable automatically\nlet client = Client::start(ClientOptions::default()).await?;\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\n// Token is read from environment variable automatically\nconst client = new CopilotClient();\n```\n\n</div>\n\n</div>\n\n**Cuándo usar:**\n\n* Pipelines de CI/CD (Acciones de GitHub, Jenkins, entre otros)\n* Pruebas automatizadas\n* Aplicaciones del lado servidor con cuentas de servicio\n* Desarrollo cuando no desea usar el inicio de sesión interactivo\n\n## BYOK (traiga su propia clave)\n\nBYOK permite usar sus propias claves de API de proveedores de modelos como Microsoft Foundry, OpenAI o Anthropic. Esto elude por completo la autenticación de GitHub Copilot.\n\n**Ventajas clave:**\n\n* No se requiere ninguna suscripción GitHub Copilot\n* Uso de implementaciones de modelos empresariales\n* Facturación directa con su proveedor de modelos\n* Compatibilidad con Microsoft Foundry, OpenAI, Anthropic y puntos de conexión compatibles con OpenAI\n\n**Consulte [BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok) para obtener detalles completos**, entre los que se incluyen:\n\n* configuración de Microsoft Foundry\n* Opciones de configuración del proveedor\n* Limitaciones y consideraciones\n* Ejemplos de código completos\n\n## Prioridad de autenticación\n\nCuando hay varios métodos de autenticación disponibles, el SDK los usa en este orden de prioridad:\n\n1. **Explícito `gitHubToken`** - Testigo pasado directamente al cliente del SDK o a la configuración de la sesión\n2. **Token de API directa** - `GITHUB_COPILOT_API_TOKEN` con `COPILOT_API_URL`\n3. **Tokens de variables de entorno** - `COPILOT_GITHUB_TOKEN` → `GH_TOKEN` → `GITHUB_TOKEN`\n4. **Credenciales de OAuth almacenadas** : desde el inicio de sesión anterior `copilot` de la CLI\n5. **GitHub CLI** - `gh auth` credenciales\n\nPara el modo de servidor multiusuario, pase una `gitHubToken` por sesión para que cada sesión se ejecute con la identidad de GitHub correcta; vea [Multiinquilino e implementaciones de servidor](/es/copilot/how-tos/copilot-sdk/setup/multi-tenancy).\n\n## Deshabilitación del inicio de sesión automático\n\nPara evitar que el SDK utilice automáticamente las credenciales almacenadas o la `gh` autenticación por CLI, configúralo para desactivar el recurso de reserva del usuario que ha iniciado sesión:\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nawait using var client = new CopilotClient(new CopilotClientOptions\n{\n    UseLoggedInUser = false,  // Only use explicit tokens\n});\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n```golang\nclient := copilot.NewClient(&copilot.ClientOptions{\n    UseLoggedInUser: copilot.Bool(false),  // Only use explicit tokens\n})\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n```java\nimport com.github.copilot.CopilotClient;\nimport com.github.copilot.rpc.*;\n\nvar client = new CopilotClient(new CopilotClientOptions()\n    .setUseLoggedInUser(false)  // Only use explicit tokens\n);\nclient.start().get();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nclient = CopilotClient({\n    \"use_logged_in_user\": False,  # Only use explicit tokens\n})\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"rust\" data-label=\"Rust\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Rust</div>\n\n```rust\nuse github_copilot_sdk::{Client, ClientOptions};\n\nlet client = Client::start(\n    ClientOptions::default().with_use_logged_in_user(false),\n).await?;\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nconst client = new CopilotClient({\n    useLoggedInUser: false,  // Only use explicit tokens\n});\n```\n\n</div>\n\n</div>\n\n## Pasos siguientes\n\n* [BYOK (traiga su propia clave)](/es/copilot/how-tos/copilot-sdk/auth/byok) : aprenda a usar sus propias claves de API\n* [Crea tu primera aplicación con tecnología Copilot](/es/copilot/how-tos/copilot-sdk/getting-started): compile la primera aplicación con tecnología de Copilot\n* [Uso de servidores MCP con el SDK de GitHub Copilot](/es/copilot/how-tos/copilot-sdk/features/mcp) : conexión a herramientas externas"}