关于 SAML SSO
SAML SSO 允许您通过自己的 SAML IdP 集中控制并保护对 你的 GitHub Enterprise Server 实例 的访问。
如果未经身份验证的用户尝试登录 你的 GitHub Enterprise Server 实例 并且已禁用 内置身份验证, GitHub 请将用户重定向到 SAML IdP 进行身份验证。 在用户成功通过 IdP 上的帐户进行身份验证后,IdP 会将用户重定向回 你的 GitHub Enterprise Server 实例。 GitHub 验证来自 IdP 的响应,然后授予对用户的访问权限。 用户的 SAML 会话在浏览器中 24 小时处于活动状态。 之后,用户必须再次使用你的 IdP 进行身份验证。
使用 JIT 预配时,如果从 IdP 中删除用户,还必须在 你的 GitHub Enterprise Server 实例 上手动暂停该用户的帐户。 否则,帐户的所有者可以继续使用访问令牌或 SSH 密钥进行身份验证。 有关详细信息,请参阅“挂起和取消挂起用户”。
支持的身份提供程序
GitHub 支持 SAML SSO 与采用 SAML 2.0 标准的 IdP 一起使用。 有关详细信息,请参阅 OASIS 网站上的 SAML Wiki。
GitHub 官方支持并内部测试以下用于 SAML 的 IdP。 有关 GitHub Enterprise Server 上 SCIM 支持的 IdP 的更多信息,请参阅 关于在 GitHub Enterprise Server 上使用 SCIM 进行用户预配。
- Microsoft Active Directory 联合身份验证服务 (AD FS)
- Microsoft Entra ID(以前称为 Azure AD)
- Okta
- OneLogin
- PingOne
- Shibboleth
有关将 Entra ID 连接到企业的详细信息,请参阅 Microsoft Docs 中的 Tutorial:Microsoft Entra SSO 与 GitHub Enterprise Server 的集成。
注意
GitHub 不测试或验证用于政府云环境(包括 Microsoft Entra ID 政府云和 Okta 政府云)中的身份提供程序 (IdP) 库应用程序。 在这些环境中,涉及库应用程序的身份验证和 SCIM 预配问题不属于GitHub的支持范围。
使用 SAML 时的用户名考量因素
GitHub 规范化 外部身份验证提供程序 中的值,以确定 上 你的 GitHub Enterprise Server 实例 上每个新个人帐户的用户名。 有关详细信息,请参阅 外部身份验证的用户名注意事项。
配置 SAML SSO
可以启用或禁用 你的 GitHub Enterprise Server 实例SAML 身份验证,也可以编辑现有配置。 可以在 . 管理控制台. 中查看和编辑身份验证设置。 有关详细信息,请参阅“从 Web UI 管理实例”。
注意
GitHub 强烈建议在过渡环境中验证任何用于身份验证的新配置。 不正确的配置可能会导致 你的 GitHub Enterprise Server 实例 产生故障时间。 有关详细信息,请参阅“设置暂存实例”。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击“”。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”****。
-
在“设置”边栏中,单击“身份验证”。
-
在“身份验证”下,选择“SAML”。
-
(可选)若要允许外部身份验证系统上没有帐户的人员使用内置身份验证登录,请选择“允许内置身份验证”。 有关详细信息,请参阅“允许对提供程序覆盖范围之外的用户进行内置身份验证”。
-
(可选)若要启用未请求响应的 SSO,请选择IdP 发起的 SSO。 默认情况下,GitHub Enterprise Server 会对未经请求的、由身份提供程序(IdP)发起的请求作出响应,并向 IdP 返回一个
AuthnRequest。提示
建议将此值保持“未选中”状态****。 您应仅在极少数情况下启用此功能,即您的 SAML 实现不支持服务提供商发起单一登录 (SSO),且在收到 GitHub Enterprise 支持 的建议时。
-
(可选)如果您不希望 SAML 提供方决定用户在你的 GitHub Enterprise Server 实例上的管理员权限,请选择“禁用管理员降级/升级”
-
(可选)若要允许 你的 GitHub Enterprise Server 实例 从 SAML IdP 接收加密 断言,请选择“需要加密断言”。
必须确保 IdP 支持加密断言,并且管理控制台中的加密和密钥传输方法与 IdP 上配置的值相匹配。 您还必须向 IdP 提供 你的 GitHub Enterprise Server 实例 的公钥证书。 有关详细信息,请参阅“启用加密断言”。
-
在“单一登录 URL”字段中,输入 IdP 上用于单一登录请求的 HTTP 或 HTTPS 终结点。 此值由您的 IdP 配置提供。 如果主机只能通过您的内部网络访问,则您可能需要将 你的 GitHub Enterprise Server 实例 配置为使用内部名称服务器。
-
(可选)在“颁发者”字段中,键入 SAML 颁发者的名称。 这将验证发送到 你的 GitHub Enterprise Server 实例的消息的真实性。
-
选择 签名方法 和 摘要方法 下拉菜单,然后选择您的 SAML 签发方用来验证来自 你的 GitHub Enterprise Server 实例 的请求完整性的哈希算法。
-
选择“名称标识符格式”下拉菜单,然后单击格式。
-
在“Verification certificate”下,单击“Choose File”,然后选择一个证书以验证来自 IdP 的 SAML 响应****。
注意
GitHub 不强制执行此 SAML IdP 证书的过期。 也就是说,即使此证书过期,SAML 身份验证也继续有效。 但是,如果你的 IdP 管理员重新生成 SAML 证书,并且你未在 GitHub 一边更新它,则用户会在 SAML 身份验证尝试期间遇到
digest mismatch错误,因为证书不匹配。 请参阅错误:摘要不匹配。 -
在“用户属性”下,如果需要,请修改 SAML 属性名称以匹配你的 IdP,或者接受默认名称。