关于 SAML 身份验证的问题
GitHub Enterprise Server 在 /var/log/github/auth.log 的身份验证日志中为失败的 SAML 身份验证记录错误消息。 您可以在此日志文件中查看响应,还可以配置更详细的日志记录。
关于 SAML 响应要求的更多信息,请参阅“SAML 配置参考”。
配置 SAML 调试
您可以配置 GitHub Enterprise Server 在每次 SAML 身份验证尝试时将详细调试日志写入 /var/log/github/auth.log。 您可以使用此额外输出对失败的身份验证尝试进行故障排除。
警告:
- 仅暂时启用 SAML 调试,并在完成故障排除后立即禁用调试。 如果保持启用调试,日志大小的增长速度可能会比平时快得多,这可能会对 GitHub Enterprise Server 的性能产生负面影响。
- 在生产环境中应用这些设置之前,请在暂存环境中测试 您的 GitHub Enterprise Server 实例 的新身份验证设置。 更多信息请参阅“设置暂存实例”。
-
在 GitHub Enterprise Server 的右上角,单击您的个人资料照片,然后单击 Enterprise settings(Enterprise 设置)。
-
在企业账户侧边� �中,单击 Policies(政策)。
-
在Policies(政策)下,单击 Options(选项)。
-
在“SAML debugging(SAML 调试)”下,选择下拉列表,然后单击 Enabled(启用)。
-
尝试通过 SAML IdP 登录 您的 GitHub Enterprise Server 实例。
-
在 您的 GitHub Enterprise Server 实例 上的 /var/log/github/auth.log 中查看调试输出。
-
完成故障排除后,选择下拉列表,然后单击 Disabled(禁用)。
解� � auth.log 中的响应
auth.log 中的某些输出可能是 Base64 编� �的。 您可以访问管理 shell 并在 您的 GitHub Enterprise Server 实例 上使用 base64
实用程序对这些响应进行解� �。 更多信息请参阅“访问管理 shell (SSH)。”
$ base64 --decode ENCODED OUTPUT
Error: "Another user already owns the account"(错误:“其他用户已拥有该帐户”)
当用户首次使用 SAML 身份验证登录到 您的 GitHub Enterprise Server 实例 时, GitHub Enterprise Server 会在实例上创建一个用户帐户,并将 SAML NameID
� 射到该帐户。
当用户再次登录时,GitHub Enterprise Server 会比较帐户的 NameID
� 射与 IdP 的响应。 如果 IdP 响应中的 NameID
不再与 GitHub Enterprise Server 对用户预期的 NameID
匹配, 登录将失败。 用户将看到以下消息。
另一个用户已经拥有该帐户。 请让您的管理员检查身份验证日志。
该消息通常表示此人的用户名或电子邮件地址已在 IdP 上更改。 确保 GitHub Enterprise Server 上用户帐户的 NameID
� 射与 IdP 上的用户 NameID
相匹配。 更多信息请参阅“更新用户的 SAML NameID
”。
Error: Recipient in SAML response was blank or not valid(错误:SAML 响应中的收件人为空或� 效)
如果 Recipient
与 您的 GitHub Enterprise Server 实例 的 ACS URL 不匹配,则当用户尝试验证时,身份验证日志中将显示以下两条错误消息之一:
Recipient in the SAML response must not be blank.
Recipient in the SAML response was not valid.
确保将 IdP 上 Recipient(收件人)
的值设置为 您的 GitHub Enterprise Server 实例 的完整 ACS URL。 例如,https://ghe.corp.example.com/saml/consume
。
Error: "SAML Response is not signed or has been modified"(错误:“SAML 响应未签名或已修改”)
如果您的 IdP 未对 SAML 响应进行签名,或者签名与内容不匹配,则身份验证日志中将显示以下错误消息。
SAML Response is not signed or has been modified.
确保为 IdP 上的 GitHub Enterprise Server 应用程序配置签名的断言。
Error: "Audience is invalid" or "No assertion found"(错误:“受众� 效”或“未找到断言”)
如果 IdP 的响应缺少 Audience
的值或者该值不正确,则身份验证日志中将显示以下错误消息。
Audience is invalid. Audience is invalid. Audience attribute does not match your_instance_url
确保将 IdP 上 Audience
的值设置为 您的 GitHub Enterprise Server 实例 的 EntityId
,这是实例的完整 URL。 例如,https://ghe.corp.example.com
。