关于使用外部身份验证的用户名
您可以为 GitHub Enterprise Server 配置使用 CAS、LDAP 或 SAML 的外部身份验证。 有关详细信息,请参阅“标识和访问管理基础知识”。
使用外部身份验证时,首次通过外部身份验证系统登录你的 GitHub Enterprise Server 实例时,你的 GitHub Enterprise Server 实例会自动为每个人员创建用户名。
用户名 不得超过 39 个字符。
注意
如果使用 SAML 和 SCIM 预配,必须先为用户进行 SCIM 预配,然后才能使用 SAML 单一登录。 如果用户尚未预配,他们将无法在实例上 GitHub Enterprise Server 完成身份验证。 有关详细信息,请参阅“关于在 GitHub Enterprise Server 上使用 SCIM 进行用户预配”。
关于用户名规范化
用户帐户 GitHub 的用户名只能包含字母数字字符和短划线(-)。
配置 CAS、LDAP 或 SAML 身份验证(不含 SCIM)时, GitHub Enterprise Server 使用外部身份验证提供程序上的用户帐户中的标识符来确定实例上 GitHub Enterprise Server 相应用户帐户的用户名。 使用 SCIM 配置 SAML 身份验证时, GitHub 使用从 IdP 发送的 SCIM userName 属性值来确定相应用户帐户的用户名。 如果标识符包含不受支持的字符, GitHub 将按照以下规则规范化用户名。
-
GitHub 将帐户用户名中的任何非字母数字字符规范化为短划线。 例如,用户名
mona.the.octocat将规范化为mona-the-octocat。 请注意,标准化的用户名也不能以短划线开头或结尾。 它们还不能包含两个连续的短划线。 -
IdP 提供的值中的字母大小写格式会保留在标准化的用户名中。
-
创建自电子邮件地址的用户名使用
@字符前面的规范化字符创建。 -
从域帐户创建的用户名是从
\\分隔符后面的规范化字符创建的。 -
如果将多个帐户规范化为相同的用户名,则将仅创建第一个用户帐户。 使用相同用户名的后续用户无法登录。
用户名规范化示例
| 提供程序上的标识符 |
GitHub.com 上的规范化用户名 | 结果 |
| :- | :- | :- |
| 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 会根据 SAML 响应中的以下某个断言来确定每位用户的用户名,以下断言按优先级从高到低排序。
- 自定义
username特性(如果定义且存在) http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name断言(如果存在)http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress断言(如果存在)NameID元素
GitHub
NameID即使存在其他属性,也需要该元素。 有关详细信息,请参阅“SAML 配置参考”。
GitHub在来自 IdP 的 NameID 与 你的 GitHub Enterprise Server 实例 上的用户名之间创建映射,因此 NameID 应是持久的、唯一的,并且在用户的整个生命周期内不会发生变化。
注意
如果用户的 NameID 确实已在 IdP 中更改,则该用户在登录 你的 GitHub Enterprise Server 实例 时将看到错误消息。 若要恢复用户的访问权限,需要更新用户帐户的 NameID 映射。 有关详细信息,请参阅“更新用户的 SAML NameID”。