Skip to main content
Skip to content

使用 GitHub 应用授权凭据进行单一登录

通过允许企业安装的 GitHub App 管理单点登录 (SSO) 授权,为多个组织的凭据进行授权。

谁可以使用此功能?

Enterprise owners and users with the "Manage enterprise credentials" permission

关于使用 GitHub App 为凭据授权

默认情况下,企业安装的 GitHub Apps 无法授权凭据。 若要减少企业成员必须为单个组织授权相同凭据的次数,可以允许应用授权现有 personal access tokens (classic) 或已验证的用户拥有的 SSH 身份验证密钥。 每个请求最多可选择 50 个组织。

若要为没有 GitHub App 的单个组织的凭据授权,请参阅 授权个人访问令牌以与单点登录一起使用将 SSH 密钥授权用于单点登录

先决条件

在应用授权凭据之前,必须满足以下要求:

  • 企业必须使用企业级 SSO。
  • 凭据所有者必须是应用将授权凭据的每个组织的成员。

创建 GitHub App

  1. 注册新应用。 有关说明,请参阅“注册GitHub应用”。 应用必须:

    • 归企业或企业内的某个组织所有。
    • 具有对“企业凭据”权限的写入访问权限。
  2. 请注意应用的客户端 ID,然后生成并安全地存储私钥。 请参阅“管理GitHub应用的私钥”。

  3. 在企业帐户上安装应用。 请参阅“在企业上安装 GitHub App”。

  4. 在应用的安装页的 URL 中,记下安装 ID。 ID 是 URL 末尾的数字 /enterprises/ENTERPRISE/settings/installations/ID 字符串。

允许 GitHub App 授权凭据

  1. 导航到您的企业。 例如,从 GitHub.com 上的 公司 页面。

  2. 在“ Settings”下,单击“Authentication security”********。

  3. 在“凭据”下,启用允许 GitHub Apps 授权凭据

生成安装访问令牌

应用必须使用企业安装访问令牌对其 API 请求进行身份验证。 组织安装访问令牌、用户访问令牌和 personal access tokens 均不受支持。

若要生成安装访问令牌,请执行以下操作:

  1. 使用应用的客户端 ID 和私钥生成 JSON Web 令牌(JWT)。 请参阅“为GitHub应用生成 JSON Web 令牌 (JWT)”。
  2. 使用 JWT 和企业安装 ID 创建安装访问令牌。 请参阅“为 GitHub 应用生成安装访问令牌”。

安装访问令牌继承授予应用的企业权限,不能限定范围,并在一小时后过期。

查找凭据标识符

对于已为企业内某个组织获得授权的凭据,组织所有者可以使用 REST API 批量获取标识符。 请参阅“适用于组织的 REST API 终结点”。

在响应中,将 authorized_credential_id 用于 personal access token (classic),或使用 fingerprint 作为 SSH 密钥。 请勿使用 credential_id,它用于标识该凭据对该组织的授权。

此端点不会返回尚未获得该组织授权的凭据。 若要获取另一个凭据的标识符,请使用以下方法之一:

  • 对于personal access token (classic),请从令牌设置页面打开该令牌。 令牌 ID 是 URL 末尾的数字 /settings/tokens/ID 。 或者,如果令牌用于在企业审核日志中记录的操作,则企业所有者可以在事件 token_id 字段中找到 ID。 仅在使用该令牌进行身份验证的企业可见事件仍被保留期间,才可在审核日志中查看该 ID。 共享 ID,而不是令牌值。 有关详细信息,请参阅 管理个人访问令牌搜索企业的审核日志
  • 对于 SSH 密钥,请查找已验证的、用户所有的身份验证密钥的 SHA-256 指纹。 有关详细信息,请参阅“检查 SSH 密钥”。

对凭据进行授权

使用 REST API 为所选组织授权该凭据。 例如:

curl --request POST \
  --url "https://api.github.com/enterprises/ENTERPRISE/credential-authorizations" \
  --header "Accept: application/vnd.github+json" \
  --header "Authorization: Bearer INSTALLATION-ACCESS-TOKEN" \
  --header "X-GitHub-Api-Version: 2026-03-10" \
  --data '{
    "credential_id": 12345678,
    "credential_type": "classic_pat",
    "organizations": ["ORGANIZATION-1", "ORGANIZATION-2"]
  }'

ENTERPRISE 替换为企业 slug,将 INSTALLATION-ACCESS-TOKEN 替换为安装访问令牌,并将 ORGANIZATION-1ORGANIZATION-2 替换为组织 slug。 将 12345678 替换为 personal access token (classic) 的 ID。 若要改为授权 SSH 密钥,请用该密钥的 SHA-256 指纹替换 12345678,并将 classic_pat 替换为 ssh_key

有关详细信息,请参阅“用于企业凭据授权的 REST API 终结点”。

通过 GitHub Apps 禁用凭据授权

禁用此设置会阻止应用创建新的凭据授权。 现有授权将持续有效,直到这些授权被撤销、该凭据被撤销或删除,或者凭据所有者失去其在该组织中的成员资格。

可以使用同一 REST API 撤销通过企业委托创建的应用的授权。