{"meta":{"title":"Проверка подлинности","intro":"SDK GitHub Copilot поддерживает несколько методов аутентификации для различных сценариев использования. Выберите метод, который лучше всего соответствует вашему сценарию развертывания.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos","title":"Инструкции"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"Второй пилот SDK"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth","title":"Проверка подлинности"},{"href":"/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/authenticate","title":"Authenticate"}],"documentType":"article"},"body":"# Проверка подлинности\n\nSDK GitHub Copilot поддерживает несколько методов аутентификации для различных сценариев использования. Выберите метод, который лучше всего соответствует вашему сценарию развертывания.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Методы аутентификации\n\n| Метод                                                                                                                        | Вариант использования                                                            | Требуется подписка на Copilot                             |\n| ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------- |\n| [GitHub Авторизованный пользователь](#github-signed-in-user)                                                                 | Интерактивные приложения, в которые пользователи входят через GitHub             | Yes                                                       |\n| [GitHub приложение OAuth](#github-oauth-app)                                                                                 | Приложения, действующие от имени пользователей через OAuth                       | Yes                                                       |\n| [Переменные среды](#environment-variables)                                                                                   | CI/CD, автоматизация, сервер-сервер                                              | Yes                                                       |\n| [Проверка подлинности между серверами](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/server-to-server-tokens) | Автоматизация с учетом организации и прямое выставление счетов организации       | Нет подписки пользователя; Требуется политика организации |\n| [БЁК (принеси свой ключ)](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/byok)                                 | Использование собственных ключей API (Microsoft Foundry, OpenAI и многое другое) | Нет                                                       |\n\n## Пользователь GitHub, вошедший в систему\n\nЭто стандартный метод аутентификации при интерактивном запуске Copilot CLI. Пользователи аутентифицируются через поток устройств GitHub OAuth, а SDK использует их сохранённые учетные данные.\n\n**Принцип работы**.\n\n1. Пользователь запускает CLI `copilot` и входит через GitHub OAuth\n2. Учетные данные надёжно хранятся в системном ключе\n3. SDK автоматически использует сохранённые учетные данные\n\n**Конфигурация 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**Когда использовать:**\n\n* Настольные приложения, где пользователи взаимодействуют напрямую\n* среды для разработки и тестирования;\n* Любой сценарий, когда пользователь может войти интерактивно\n\n## GitHub приложение OAuth\n\nИспользуйте приложение OAuth GitHub для аутентификации пользователей через ваше приложение и передачи их учетных данных SDK. Это позволяет вашему приложению делать запросы на Copilot API от имени пользователей, которые авторизируют ваше приложение.\n\n**Принцип работы**.\n\n1. Пользователь авторизирует ваше приложение OAuth GitHub\n2. Ваше приложение получает пользовательский токен доступа (`gho_` или `ghu_` префикс)\n3. Передача маркера в пакет SDK через конфигурацию клиента\n\n**Конфигурация 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**Поддерживаемые типы токенов:**\n\n* `gho_` - Токены доступа пользователей OAuth\n* `ghu_` - GitHub Токены доступа пользователей приложения\n* `github_pat_` - Детализированные персональные токены доступа\n\n**Не поддерживаются:**\n\n* `ghp_` - Классические личные токены доступа (устарели)\n\n**Когда использовать:**\n\n* Веб-приложения, в которых пользователи входят через GitHub\n* SaaS-приложения, построенные поверх Copilot\n* Любое многопользовательское приложение, где нужно делать запросы от имени разных пользователей\n\nДополнительные сведения см. в разделе [Настройка GitHub OAuth](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/github-oauth).\n\n## Переменные среды\n\nДля автоматизации, CI/CD конвейеров и сценариев сервер-сервер можно аутентифицировать с помощью переменных среды.\n\nСведения об автоматизации с атрибутами организации, которая не должна использовать личный маркер доступа пользователя, см. в разделе [Проверка подлинности между серверами](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/server-to-server-tokens).\n\n**Поддерживаемые переменные среды (в порядке приоритета):**\n\n1. `COPILOT_GITHUB_TOKEN` — рекомендуется для явного Copilot использования\n2. `GH_TOKEN` — совместим с GitHub CLI\n3. `GITHUB_TOKEN` - GitHub Actions совместим\n\n**Принцип работы**.\n\n1. Установите одну из поддерживаемых переменных среды с действительным токеном\n2. SDK автоматически обнаруживает и использует токен\n\n**Конфигурация SDK:**\n\nИзменения кода не требуются — 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// 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**Когда использовать:**\n\n* Конвейеры CI/CD (GitHub Actions, Jenkins и многое другое)\n* Автоматическое тестирование\n* Серверные приложения с сервисными аккаунтами\n* Разработка, когда вы не хотите использовать интерактивный вход\n\n## БЁК (принеси свой ключ)\n\nBYOK позволяет использовать собственные ключи API от поставщиков моделей, таких как Microsoft Foundry, OpenAI или Anthropic. Это полностью обходит аутентификацию GitHub Copilot.\n\n**Ключевые преимущества:**\n\n* Не требуется подписка на GitHub Copilot\n* Использование корпоративных моделей\n* Прямое выставление счетов у вашего поставщика модели\n* Поддержка конечных точек, совместимых Microsoft Foundry, OpenAI, Anthropic и OpenAI\n\n**Полная информация см. [БЁК (принеси свой ключ)](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/byok)**, включая:\n\n* настройка Microsoft Foundry\n* Параметры конфигурации поставщика\n* Ограничения и рекомендации\n* Полные примеры кода\n\n## Приоритет аутентификации\n\nКогда доступно несколько методов аутентификации, SDK использует их в следующем порядке приоритета:\n\n1. **Явно `gitHubToken`** - Токен передаётся напрямую клиенту SDK или конфигурации сессии\n2. **Токен прямого API** - `GITHUB_COPILOT_API_TOKEN` с `COPILOT_API_URL`\n3. Токены \\*\\*\\*\\* - `COPILOT_GITHUB_TOKEN` → `GH_TOKEN` →`GITHUB_TOKEN`\n4. **Сохранённые учетные данные OAuth** — из предыдущего `copilot` входа в CLI\n5. **GitHub CLI** - `gh auth` квалификации\n\nДля многопользовательского серверного режима передайте сессионный `gitHubToken`, чтобы каждая сессия проходила с правильной идентичностью GitHub; см. [Мультиарендные и серверные развертывания](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/multi-tenancy).\n\n## Отключение автовхода\n\nЧтобы предотвратить автоматическое использование хранимых учетных данных или `gh` проверки подлинности интерфейса командной строки пакета 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\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## Дальнейшие действия\n\n* [БЁК (принеси свой ключ)](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/byok) — Научитесь использовать свои собственные API-ключи\n* [Создайте своё первое приложение на базе Copilot](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/getting-started) — Создайте своё первое приложение на базе Copilot\n* [Использование MCP-серверов с SDK GitHub Copilot](/ru/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/mcp) — Подключение к внешним инструментам"}