Skip to main content

配置 Copilot 代理以与 GitHub 通信

了解如何使用 Copilot agent 验证有效负载并从 GitHub 获取资源。

Note

GitHub Copilot Extensions 为 公共预览版,可能随时更改。

先决条件

在配置 Copilot agent 与 GitHub 通信之前,应了解 Copilot agent 如何与 Copilot 平台通信。 请参阅“配置 Copilot 代理以与 Copilot 平台通信”。

验证有效负载是否来自 GitHub

在 Copilot agent 开始处理请求之前,应验证请求是否来自 GitHub,以及该请求是否适用于代理。 所有代理请求都包含 Github-Public-Key-IdentifierGithub-Public-Key-Signature 标头。 要验证特定请求的签名,请使用 https://api.github.com/meta/public_keys/copilot_api 中列出的当前公钥,将 Github-Public-Key-Signature 标头中的签名与请求正文的签名副本进行比较。

有关特定语言签名验证的更多详细信息和示例,请参阅 github-technology-partners/signature-verification 存储库。

从 GitHub API 中提取资源

对 Copilot agent 的请求将收到 X-Github-Token 标头。 此标头包含一个 API 令牌,可用于代表与代理交互的用户从 GitHub API 中提取资源。 此令牌的权限是用户自己的权限与授予 GitHub App 安装的权限重叠的部分。

有关如何使用 X-Github-Token 的示例,请参阅以下代码示例:

async function whoami(req) {
  const response = await fetch(
    // The GitHub API endpoint for the authenticated user
    "https://api.github.com/user",
    {
      headers: {
        "Authorization": `Bearer ${req.headers.get("x-github-token")}`
      }
    }
  )

  const user = await response.json()
  return user
}

要了解有关使用 GitHub API 的更多信息,并浏览官方软件开发工具包 (SDK),请参阅 octokit 组织。