关于使用外部身份验证的用户名
可以使用 CAS、LDAP 或 SAML 为 GitHub Enterprise Server 配置外部身份验证。 有关详细信息,请参阅“关于身份和访问管理”。
如果使用外部身份验证,当用户首次通过外部身份验证系统登录 你的 GitHub Enterprise Server 实例 时,你的 GitHub Enterprise Server 实例 会自动为每个用户创建一个用户名。
用户名不得超过 39 个字符。
关于用户名规范化
GitHub 上用户帐户的用户名只能包含字母数字字符和短划线 (-
)。
配置 CAS、LDAP 或 SAML 身份验证时,GitHub Enterprise Server 使用外部身份验证提供程序上用户帐户的标识符来确定 GitHub Enterprise Server 上相应用户帐户的用户名。 如果此标识符包含不受支持的字符,GitHub Enterprise Server 将按照以下规则规范化用户名。
-
GitHub Enterprise Server 会将帐户用户名中的所有非字母数字字符规范化为短划线。 例如,用户名
mona.the.octocat
将规范化为mona-the-octocat
。 请注意,标准化的用户名也不能以短划线开头或结尾。 它们还不能包含两个连续的短划线。 -
创建自电子邮件地址的用户名使用
@
字符前面的规范化字符创建。 -
从域帐户创建的用户名是从
\\
分隔符后面的规范化字符创建的。 -
如果将多个帐户规范化为相同的 GitHub Enterprise Server 用户名,则将仅创建第一个用户帐户。 使用相同用户名的后续用户无法登录。
用户名规范化示例
提供程序上的标识符 | GitHub.com 上的规范化用户名 | 结果 |
---|---|---|
The.Octocat | the-octocat | 此用户名已成功创建。 |
!The.Octocat | -the-octocat | 此用户名无法创建,因其以短划线开头。 |
The.Octocat! | the-octocat- | 此用户名无法创建,因其以短划线结尾。 |
The!!Octocat | the--octocat | 此用户名无法创建,因其包含两个连续的短划线。 |
The!Octocat | the-octocat | 此用户名无法创建。 虽然标准化的用户名有效,但它已经存在。 |
The.Octocat@example.com | the-octocat | 此用户名无法创建。 虽然标准化的用户名有效,但它已经存在。 |
internal\\The.Octocat | the-octocat | 此用户名无法创建。 虽然标准化的用户名有效,但它已经存在。 |
mona.lisa.the.octocat.from.github.united.states@example.com | mona-lisa-the-octocat-from-github-united-states | 不会创建此用户名,因为它超出了 39 个字符的限制。 |
关于使用 SAML 的用户名规范化
如果为 你的 GitHub Enterprise Server 实例 配置 SAML 身份验证,则 GitHub Enterprise Server 通过 SAML 响应中的以下断言之一确定每个人的用户名,这些断言按优先级降序排列。
- 自定义
username
特性(如果定义且存在) http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
断言(如果存在)http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
断言(如果存在)NameID
元素
GitHub Enterprise Server 需要 NameID
元素,即使存在其他特性也是如此。 有关详细信息,请参阅“SAML 配置参考”。
GitHub Enterprise Server 在来自 IdP 的 NameID
和 你的 GitHub Enterprise Server 实例 上的用户名间创建一个映射,因此 NameID
应是持久、唯一的,并且在用户生命周期内不会发生变化。
注意:如果用户的 NameID
确实在 IdP 上发生了更改,则该用户在登录 你的 GitHub Enterprise Server 实例 时会看到一条错误消息。 若要恢复用户的访问权限,需要更新用户帐户的 NameID
映射。 有关详细信息,请参阅“更新用户的 SAML NameID”。