{"meta":{"title":"Autenticação","intro":"O SDK do GitHub Copilot dá suporte a vários métodos de autenticação para atender a diferentes casos de uso. Escolha o método que melhor corresponde ao seu cenário de implantação.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/how-tos","title":"Instruções"},{"href":"/pt/copilot/how-tos/copilot-sdk","title":"SDK do Copilot"},{"href":"/pt/copilot/how-tos/copilot-sdk/auth","title":"Autenticação"},{"href":"/pt/copilot/how-tos/copilot-sdk/auth/authenticate","title":"Authenticate"}],"documentType":"article"},"body":"# Autenticação\n\nO SDK do GitHub Copilot dá suporte a vários métodos de autenticação para atender a diferentes casos de uso. Escolha o método que melhor corresponde ao seu cenário de implantação.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Métodos de autenticação\n\n| Método                                                                                                 | Caso de uso                                                                 | Assinatura de Copilot necessária                                        |\n| ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | ----------------------------------------------------------------------- |\n| [GitHub usuário conectado](#github-signed-in-user)                                                     | Aplicativos interativos em que os usuários entrarão com GitHub              | Yes                                                                     |\n| [aplicativo OAuth GitHub](#github-oauth-app)                                                           | Aplicativos que atuam em nome dos usuários por meio do OAuth                | Yes                                                                     |\n| [Variáveis de ambiente](#environment-variables)                                                        | CI/CD, automação, servidor para servidor                                    | Yes                                                                     |\n| [Autenticação de servidor para servidor](/pt/copilot/how-tos/copilot-sdk/auth/server-to-server-tokens) | Automação atribuída pela organização e cobrança direta da organização       | Nenhuma assinatura de usuário; é necessária uma política da organização |\n| [BYOK (Bring Your Own Key - traga sua própria chave)](/pt/copilot/how-tos/copilot-sdk/auth/byok)       | Usando suas próprias chaves de API (Microsoft Foundry, OpenAI e muito mais) | Não                                                                     |\n\n## Usuário conectado do GitHub\n\nEsse é o método de autenticação padrão ao executar a CLI Copilot interativamente. Os usuários se autenticam por meio do fluxo de dispositivo OAuth do GitHub, e o SDK usa suas credenciais armazenadas.\n\n**Como funciona**:\n\n1. O usuário executa `copilot` CLI e entra por GitHub OAuth\n2. As credenciais são armazenadas com segurança no conjunto de chaves do sistema\n3. O SDK usa automaticamente as credenciais armazenadas\n\n**Configuração do 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**Quando usar:**\n\n* Aplicativos da área de trabalho em que os usuários interagem diretamente\n* Ambientes de desenvolvimento e teste\n* Qualquer cenário em que um usuário possa entrar interativamente\n\n## Aplicativo OAuth do GitHub\n\nUse um aplicativo GitHub OAuth para autenticar usuários por meio do aplicativo e passar suas credenciais para o SDK. Isso permite que seu aplicativo faça Copilot solicitações de API em nome de usuários que autorizam seu aplicativo.\n\n**Como funciona**:\n\n1. Usuário autoriza seu aplicativo OAuth do GitHub\n2. Seu aplicativo recebe um token de acesso do usuário (com o prefixo `gho_` ou `ghu_`)\n3. Passar o token para o SDK por meio de sua configuração de cliente\n\n**Configuração do 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 com suporte:**\n\n* `gho_` – Tokens de acesso do usuário OAuth\n* `ghu_` – tokens de acesso do usuário do aplicativo GitHub\n* `github_pat_` — Tokens de acesso pessoal refinados\n\n**Sem suporte:**\n\n* `ghp_` - Tokens de acesso pessoal clássicos (preteridos)\n\n**Quando usar:**\n\n* Aplicativos Web em que os usuários se inscrevem por meio de GitHub\n* Aplicativos SaaS baseados em Copilot\n* Qualquer aplicativo multiusuário em que você precisa fazer solicitações em nome de usuários diferentes\n\nPara obter mais informações, consulte [Configuração do OAuth do GitHub](/pt/copilot/how-tos/copilot-sdk/setup/github-oauth).\n\n## Variáveis de ambiente\n\nPara automação, pipelines de CI/CD e cenários de servidor para servidor, você pode se autenticar usando variáveis de ambiente.\n\nPara automação atribuída pela organização que não deve usar o token de acesso pessoal de um usuário, consulte [Autenticação de servidor para servidor](/pt/copilot/how-tos/copilot-sdk/auth/server-to-server-tokens).\n\n**Variáveis de ambiente com suporte (em ordem de prioridade):**\n\n1. `COPILOT_GITHUB_TOKEN` – Recomendado para uso explícito do Copilot\n2. `GH_TOKEN` – compatível com a CLI GitHub\n3. `GITHUB_TOKEN` – compatível com GitHub Actions\n\n**Como funciona**:\n\n1. Definir uma das variáveis de ambiente com suporte com um token válido\n2. O SDK detecta e usa automaticamente o token\n\n**Configuração do SDK:**\n\nNenhuma alteração de código necessária – o SDK detecta automaticamente variáveis de ambiente:\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**Quando usar:**\n\n* Pipelines de CI/CD (GitHub Actions, Jenkins e mais)\n* Teste automatizado\n* Aplicativos do lado do servidor com contas de serviço\n* Desenvolvimento quando você não quiser usar logon interativo\n\n## BYOK (Bring Your Own Key - traga sua própria chave)\n\nO BYOK permite que você use suas próprias chaves de API de provedores de modelo, como Microsoft Foundry, OpenAI ou Anthropic. Isso contorna totalmente a autenticação do GitHub Copilot.\n\n**Principais benefícios:**\n\n* Nenhuma assinatura de GitHub Copilot necessária\n* Usar implantações de modelo empresarial\n* Cobrança direta com seu fornecedor de modelo\n* Suporte ao Microsoft Foundry, OpenAI, Anthropic e endpoints compatíveis com OpenAI\n\n**Consulte o [BYOK (Bring Your Own Key - traga sua própria chave)](/pt/copilot/how-tos/copilot-sdk/auth/byok) para obter detalhes completos**, incluindo:\n\n* configuração do Microsoft Foundry\n* Opções de configuração do provedor\n* Limitações e considerações\n* Exemplos de código completos\n\n## Prioridade de autenticação\n\nQuando vários métodos de autenticação estão disponíveis, o SDK os usa nesta ordem de prioridade:\n\n1. **Explícito `gitHubToken`** — Token passado diretamente para o cliente SDK ou configuração de sessão\n2. **Token de API direto** - `GITHUB_COPILOT_API_TOKEN` com `COPILOT_API_URL`\n3. **Tokens de variáveis de ambiente** - `COPILOT_GITHUB_TOKEN` → `GH_TOKEN` → `GITHUB_TOKEN`\n4. **Credenciais OAuth armazenadas** – Do logon anterior `copilot` da CLI\n5. **GitHub CLI** - `gh auth` credenciais\n\nPara o modo de servidor multiusuário, passe um `gitHubToken` por sessão para que cada sessão seja executada com a identidade de GitHub correta; consulte [Multilocação e implantações de servidores](/pt/copilot/how-tos/copilot-sdk/setup/multi-tenancy).\n\n## Desabilitando o logon automático\n\nPara impedir que o SDK use automaticamente credenciais armazenadas ou `gh` autenticação via CLI, configure-o para desativar o recurso de fallback para o usuário conectado:\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## Próximas Etapas \n\n* [BYOK (Bring Your Own Key - traga sua própria chave)](/pt/copilot/how-tos/copilot-sdk/auth/byok) – Saiba como usar suas próprias chaves de API\n* [Crie seu primeiro aplicativo com tecnologia do Copilot](/pt/copilot/how-tos/copilot-sdk/getting-started) - Crie seu primeiro aplicativo com tecnologia do Copilot\n* [Usando servidores MCP com o SDK do GitHub Copilot](/pt/copilot/how-tos/copilot-sdk/features/mcp) – Conectar-se a ferramentas externas"}