Skip to main content
我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们
GitHub AE 目前是有限发行版。请联系我们的销售团队以了解更多信息。

SAML 配置参考

您可以查看GitHub AE上的企业的 SAML 元数据,还可以了解有关可用 SAML 属性和响应要求的更多信息。

关于 SAML 配置

要使用 SAML 单点登录 (SSO) 向 GitHub AE 验证,您必须配置外部 SAML 身份提供程序 (IdP) 和 GitHub AE 上的企业。 在 SAML 配置中,GitHub AE 充当 SAML 服务提供程序 (SP)。

为 GitHub AE 配置 SAML SSO 时,您必须输入 SAML IdP 中的唯一值,并且还必须输入 IdP 上 GitHub AE 的唯一值。 有关 GitHub AE 的 SAML SSO 配置的详细信息,请参阅“为企业配置 SAML 单点登录”。

SAML 元数据

GitHub AE 上企业的 SP 元数据在 https://HOSTNAME/saml/metadata 上可用,其中 HOSTNAME 是企业在 GitHub AE 上的主机名。 GitHub AE 使用 urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST 绑定。

其他名称描述示例
SP 实体 IDSP URL,受众限制GitHub AE 的顶级 URLhttps://HOSTNAME
SP 断言使用者服务 (ACS) URL答复、收件人或目标 URLIdP 发送 SAML 响应的 URLhttps://HOSTNAME/saml/consume
SP 单点登录 (SSO) URLIdP 开始 SSO 的 URLhttps://HOSTNAME/sso

SAML 属性

以下 SAML 属性可用于 GitHub AE。

名称必填?描述
NameID持久用户标识符。 可以使用任意持久名称标识符格式。 GitHub AE 将规范化 NameID 元素以用作用户名,除非提供了替代断言之一。 更多信息请参阅“外部身份验证的用户名注意事项”。
SessionNotOnOrAfterGitHub AE 使关联的会话失效的日期。 失效后,此人必须再次进行身份验证才能访问 企业的资源。 更多信息请参阅“会话持续时间和超时”。
administrator当值为 true 时,GitHub AE 会自动将用户提升为 企业所有者。 将此属性设置为除 true 以外的任何值都将导致降级,只要该值不为空。 省略此属性或将值留空不会更改用户的角色。
full_name用户的全名显示在用户的个人资料页上。

要为属性指定多个值,请使用多个 <saml2:AttributeValue> 元素。

<saml2:Attribute FriendlyName="public_keys" Name="urn:oid:1.2.840.113549.1.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <saml2:AttributeValue>ssh-rsa LONG KEY</saml2:AttributeValue>
    <saml2:AttributeValue>ssh-rsa LONG KEY 2</saml2:AttributeValue>
</saml2:Attribute>

SAML 响应要求

GitHub AE 要求来自 IdP 的响应消息满足以下要求。

  • 您的 IdP 必须在根响应文档上提供 <Destination> 元素,并且只有在对根响应文档进行签名时才与 ACS URL 匹配。 如果您的 IdP 对断言进行签名,GitHub AE 将忽略该断言。

  • 您的 IdP 必须始终提供 <Audience> 元素作为 <AudienceRestriction> 元素的一部分。 该值必须与 GitHub AE 的 EntityId 匹配。 此值是您访问 您的企业 的 URL,例如 https://SUBDOMAIN.githubenterprise.comhttps://SUBDOMAIN.github.ushttps://SUBDOMAIN.ghe.com

  • 您的 IdP 必须使用数字签名保护响应中的每个断言。 可以通过对每个单独的 <Assertion> 元素进行签名或对 <Response> 元素进行签名来实现此目的。

  • 您的 IdP 必须提供 <NameID> 元素作为 <Subject> 元素的一部分。 您可以使用任何永久名称标识符格式。

  • 您的 IdP 必须包含 Recipient 属性,该属性必须设置为 ACS URL。 下面的示例演示了该属性。

    <samlp:Response ...>
      <saml:Assertion ...>
        <saml:Subject>
          <saml:NameID ...>...</saml:NameID>
          <saml:SubjectConfirmation ...>
            <saml:SubjectConfirmationData Recipient="https://SUBDOMAIN.ghe.com/saml/consume" .../>
          </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:AttributeStatement>
          <saml:Attribute FriendlyName="USERNAME-ATTRIBUTE" ...>
            <saml:AttributeValue>monalisa</saml:AttributeValue>
          </saml:Attribute>
        </saml:AttributeStatement>
      </saml:Assertion>
    </samlp:Response>
    

会话持续时间和超时

为防止别人使用您的 IdP 进行身份验证并无限期地保持授权状态,GitHub AE 会定期使有权访问企业资源的每个用户帐户的会话失效。 失效后,此人必须再次向您的 IdP 进行身份验证。 默认情况下,如果您的 IdP 未断言 SessionNotOnOrAfter 属性的值,则 GitHub AE 在使用 IdP 成功进行身份验证后 一周内使会话失效。

要自定义会话持续时间,您可以在 IdP 上定义 SessionNotOnOrAfter 属性的值。 如果定义的值小于 24 小时,则每次 GitHub AE 启动重定向时,GitHub AE 都会提示用户进行身份验证。

注意

  • 对于 Azure AD,SAML 令牌的可配置生存期策略不控制 GitHub AE 的会话超时。
  • Okta 当前不会在向 GitHub AE 进行 SAML 身份验证期间发送 SessionNotOnOrAfter 属性。 更多信息请联系 Okta。