8.5. X.509 客户端证书用户身份验证


如果您已将服务器配置为使用 mutual SSL 身份验证,则 Red Hat Single Sign-On 支持使用 X.509 客户端证书登录。

典型的工作流:

  • 客户端通过 SSL/TLS 频道发送身份验证请求。
  • 在 SSL/TLS 握手期间,服务器和客户端会交换其 x.509/v3 证书。
  • 容器(JBoss EAP)验证证书 PKIX 路径和证书到期日期。
  • X.509 客户端证书验证器使用以下方法之一验证客户端证书:

    • 使用 CRL 或 CRL 分发点检查证书撤销状态。
    • 使用 OCSP (在线证书状态协议)检查证书撤销状态。
    • 验证证书中的密钥是否与预期的密钥匹配。
    • 验证证书中的扩展密钥是否与预期的扩展密钥匹配。
  • 如果这些检查中有任何一个失败,x.509 身份验证会失败。否则,身份验证器会提取证书身份并将其映射到现有用户。

当证书映射到现有用户时,行为会根据身份验证流来剥离:

  • 在浏览器流中,服务器会提示用户确认其身份或使用用户名和密码登录。
  • 在 Direct Grant 流中,服务器会登录到用户。
重要

请注意,Web 容器负责验证证书 PKIX 路径。Red Hat Single Sign-On 一侧的 X.509 验证器只提供对检查证书过期、证书撤销状态和密钥使用的额外支持。如果您在使用在反向代理后部署的 Red Hat Single Sign-On,请确保您的反向代理配置为验证 PKIX 路径。如果您不使用反向代理和用户直接访问 JBoss EAP,您应该象 JBoss EAP 一样确保验证 PKIX 路径,只要它进行了配置,如下所示:

8.5.1. 功能

支持的证书身份源:

  • 使用正则表达式匹配 SubjectDN
  • X500 Subject 的 email 属性
  • X500 使用者电子邮件地址来自主题备用名称(RFC822Name 常规名称)
  • X500 对象来自主题备用名称扩展的其他名称。这个其他名称通常是 User Principal Name (UPN)。
  • X500 Subject 的 Common Name 属性
  • 使用正则表达式匹配 IssuerDN
  • 证书序列号
  • 证书 Serial Number 和 IssuerDN
  • SHA-256 证书指纹
  • PEM 格式的完整证书

8.5.1.1. 正则表达式

Red Hat Single Sign-On 使用正则表达式作为过滤器从 Subject DN 或 Issuer DN 中提取证书身份。例如,此正则表达式与 email 属性匹配:

emailAddress=(.*?)(?:,|$)

如果 使用正则表达式,如果将 Identity Source 设置为 Match SubjectDNMatch IssuerDN,则应用正则表达式 过滤。

8.5.1.1.1. 将证书身份映射到现有用户

证书身份映射可以将提取的用户身份映射到现有用户的用户名、电子邮件或自定义属性,其值与证书身份匹配。例如,将 身份源 设置为 Subject 的电子邮件 或用户映射方法为 Username 或 email,使 X.509 客户端证书验证器使用证书主题 DN 中的 email 属性作为搜索条件,因为按用户名或电子邮件搜索现有用户。

重要
  • 如果您在 realm 设置中禁用 带有电子邮件 的登录,则同一规则适用于证书身份验证。用户无法使用 email 属性登录。
  • 使用 证书 Serial Number 和 IssuerDN 作为身份源需要两个序列号和 IssuerDN 的自定义属性。
  • SHA-256 证书指纹 是 SHA-256 证书指纹的小写十六进制表示。
  • 使用 PEM 格式的完整证书 作为身份源仅限于映射到外部联合源(如 LDAP)的自定义属性。由于有长限制,Red Hat Single Sign-On 无法将证书存储在其数据库中,因此,如果是 LDAP,您必须启用 Always Read Value From LDAP
8.5.1.1.2. 扩展证书验证
  • 使用 CRL 撤销状态检查。
  • 使用 CRL/Distribution Point 撤销状态检查。
  • 使用 OCSP/Responder URI 撤销状态检查。
  • 证书密钥验证.
  • 证书扩展密钥验证.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.