关于使用 GitHub App 为凭据授权
默认情况下,企业安装的 GitHub Apps 无法授权凭据。 若要减少企业成员必须为单个组织授权相同凭据的次数,可以允许应用授权现有 personal access tokens (classic) 或已验证的用户拥有的 SSH 身份验证密钥。 每个请求最多可选择 50 个组织。
若要为没有 GitHub App 的单个组织的凭据授权,请参阅 授权个人访问令牌以与单点登录一起使用 或 将 SSH 密钥授权用于单点登录。
先决条件
在应用授权凭据之前,必须满足以下要求:
- 企业必须使用企业级 SSO。
- 凭据所有者必须是应用将授权凭据的每个组织的成员。
创建 GitHub App
-
注册新应用。 有关说明,请参阅“注册GitHub应用”。 应用必须:
- 归企业或企业内的某个组织所有。
- 具有对“企业凭据”权限的写入访问权限。
-
请注意应用的客户端 ID,然后生成并安全地存储私钥。 请参阅“管理GitHub应用的私钥”。
-
在企业帐户上安装应用。 请参阅“在企业上安装 GitHub App”。
-
在应用的安装页的 URL 中,记下安装 ID。 ID 是 URL 末尾的数字
/enterprises/ENTERPRISE/settings/installations/ID字符串。
允许 GitHub App 授权凭据
-
导航到您的企业。 例如,从 GitHub.com 上的 公司 页面。
-
在“ Settings”下,单击“Authentication security”********。
-
在“凭据”下,启用允许 GitHub Apps 授权凭据。
生成安装访问令牌
应用必须使用企业安装访问令牌对其 API 请求进行身份验证。 组织安装访问令牌、用户访问令牌和 personal access tokens 均不受支持。
若要生成安装访问令牌,请执行以下操作:
- 使用应用的客户端 ID 和私钥生成 JSON Web 令牌(JWT)。 请参阅“为GitHub应用生成 JSON Web 令牌 (JWT)”。
- 使用 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-1 和 ORGANIZATION-2 替换为组织 slug。 将 12345678 替换为 personal access token (classic) 的 ID。 若要改为授权 SSH 密钥,请用该密钥的 SHA-256 指纹替换 12345678,并将 classic_pat 替换为 ssh_key。
有关详细信息,请参阅“用于企业凭据授权的 REST API 终结点”。
通过 GitHub Apps 禁用凭据授权
禁用此设置会阻止应用创建新的凭据授权。 现有授权将持续有效,直到这些授权被撤销、该凭据被撤销或删除,或者凭据所有者失去其在该组织中的成员资格。
可以使用同一 REST API 撤销通过企业委托创建的应用的授权。