Skip to main content

使用 Copilot SDK 进行身份验证

在 GitHub Copilot SDK 中选择最适合您的部署方案的身份验证方法。

谁可以使用此功能?

GitHub Copilot SDK 适用于所有 Copilot 计划。

注意

Copilot SDK 当前处于 公开预览. 功能和可用性可能会发生更改。

身份验证方法概述

          GitHub Copilot SDK 支持多种身份验证方法以适应不同的用例。

| 方法 | 用例 | Copilot 需要订阅 | |--------|----------|-------------------------------| | GitHub 登录用户 | 用户通过GitHub登录的交互式应用程序 | 是的 | | OAuth GitHub 应用 | 通过 OAuth 代表用户运行的应用 | 是的 | | 环境变量 | CI/CD、自动化、服务器到服务器 | 是的 | | BYOK (自带密钥) | 使用自己的 API 密钥(Azure AI Foundry、OpenAI 等) | 否 |

GitHub 登录用户

这是以交互方式运行 GitHub Copilot 命令行界面 (CLI) 时的默认身份验证方法,请参阅 对 GitHub Copilot CLI 进行身份验证。 用户通过 GitHub OAuth 设备流进行身份验证,SDK 使用其存储的凭据。

          **工作原理**:
  1. 用户运行 copilot CLI 并通过 OAuth 登录 GitHub 。

  2. 凭据安全地存储在系统密钥链中。

  3. SDK 自动使用存储的凭据。

           **SDK 配置:**
    
import { CopilotClient } from "@github/copilot-sdk";

// Default: uses signed-in user credentials
const client = new CopilotClient();

有关其他语言的示例,请参阅存储库中的github/copilot-sdk

          **何时使用此方法:**
  • 用户直接交互的桌面应用程序
  • 开发和测试环境
  • 用户可以以交互方式登录的任何方案

OAuth GitHub 应用

使用 OAuth GitHub 应用通过应用程序对用户进行身份验证,并将其凭据传递给 SDK。 这样,应用程序就可以代表授权应用的用户发出 GitHub Copilot API 请求。

          **工作原理**:
  1. 用户授权 OAuth GitHub 应用。

  2. 你的应用会收到用户访问令牌(gho_ghu_ 前缀)。

  3. 通过 githubToken 选项将令牌传递给 SDK。

           **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
});

有关其他语言的示例,请参阅存储库中的github/copilot-sdk

          **支持的令牌类型:**
  • gho_ — OAuth 用户访问令牌

  • ghu_ — GitHub 应用用户访问令牌

  • github_pat_ — Fine-grained personal access tokens

            **不支持:**
    
  • ghp_ — Personal access tokens (classic) (关闭)

            **何时使用此方法:**
    
  • 用户通过GitHub登录的 Web 应用程序

  • 构建在GitHub Copilot 之上的软件即服务(SaaS)应用程序

  • 需要代表不同用户发出请求的任何多用户应用程序

环境变量

对于自动化、CI/CD 管道和服务器到服务器方案,可以使用环境变量进行身份验证。

          **支持的环境变量(按优先级顺序):**
  1.           `COPILOT_GITHUB_TOKEN` - 建议用于显式 Copilot 用法
    
  2.        `GH_TOKEN` — GitHub CLI 兼容
    
  3.        `GITHUB_TOKEN` — GitHub Actions 兼容
    

SDK 会自动检测和使用这些环境变量,而无需进行任何代码更改:

import { CopilotClient } from "@github/copilot-sdk";

// Token is read from environment variable automatically
const client = new CopilotClient();
          **何时使用此方法:**
  • CI/CD 管道(GitHub Actions、Jenkins 等)
  • 自动测试
  • 具有服务帐户的服务器端应用程序
  • 不需要使用交互式登录时的开发

BYOK (自带密钥)

BYOK 允许您使用来自 Azure AI Foundry、OpenAI 或 Anthropic 等模型提供程序的自有 API 密钥。 这会完全绕过 GitHub Copilot 身份验证。

          **主要优势:**
  • 不需要 GitHub Copilot 订阅
  • 使用企业模型部署
  • 使用模型提供商进行直接计费
  • 支持 Azure AI Foundry、OpenAI、Anthropic 和 OpenAI 兼容终结点

有关完整的设置说明,包括提供程序配置选项、限制和代码示例,请参阅 自带密钥(BYOK)

身份验证优先级

当有多个身份验证方法可用时,SDK 会按以下优先级顺序使用这些方法:

  1.        **明确 `githubToken`** — 直接传递给 SDK 构造函数的令牌
    
  2.           **直接 API 令牌** - 含 `COPILOT_API_URL` 的 `GITHUB_COPILOT_API_TOKEN`
    
  3.        **环境变量令牌** - `COPILOT_GITHUB_TOKEN` → `GH_TOKEN` → `GITHUB_TOKEN`
    
  4.        **存储的 OAuth 凭据** — 从以前的 `copilot` CLI 登录
    
  5.        **
           GitHub CLI
           ** — `gh auth` 认证凭据
    

禁用自动登录

若要防止 SDK 自动使用存储的凭据或 GitHub CLI 身份验证,请将 useLoggedInUser 选项设置为 false

const client = new CopilotClient({
    useLoggedInUser: false,  // Only use explicit tokens
});

有关其他语言的示例,请参阅存储库中的github/copilot-sdk

后续步骤