搜索

3.4. 配置安全域以使用基于证书的身份验证

download PDF

JBoss EAP 让您能够通过安全域使用基于证书的身份验证来保护 Web 应用或 EJB 的安全。

重要

在配置基于证书的身份验证之前,您需要启用并配置用于应用的双Way SSL/TLS,这需要为 JBoss EAP 实例以及访问由安全域保护的 Web 应用或 EJB 保护的任何客户端配置 X509 证书。

在配置了证书、信任存储和双向 SSL/TLS 后,您可以继续配置使用基于证书的身份验证的安全域,配置应用使用该安全域,并将客户端配置为使用客户端证书。

3.4.1. 使用基于证书的身份验证创建安全域

要创建使用基于证书的身份验证的安全域,您需要指定信任存储以及证书登录模块或其子类

truststore 必须包含用于身份验证的任何可信客户端证书,或者必须包含用于为客户端的证书签名的证书颁发机构的证书。login 模块用于利用已配置的信任存储来验证客户端提供的证书。整个安全域还必须提供一种方式,在角色通过身份验证后将角色映射到主体。证书登录模块本身不会将任何角色信息映射到主体,但也可与另一个登录模块结合使用。另外,证书登录模块的两个子类( CertificateRolesDatabaseCertificate )提供了在角色验证后将角色映射到主体的方法。以下示例演示了如何使用 CertificateRoles 登录模块为安全域配置基于证书的身份验证。

警告

在进行身份验证时,安全域将使用客户端在建立双向 SSL/TLS 时提供的相同证书。因此,客户端必须通过应用或 EJB 对 BOTH 双向 SSL/TLS 使用相同的证书和基于证书的身份验证。

使用基于证书的身份验证的安全域示例

/subsystem=security/security-domain=cert-roles-domain:add

/subsystem=security/security-domain=cert-roles-domain/jsse=classic:add(truststore={password=secret, url="/path/to/server.truststore.jks"}, keystore={password=secret, url="/path/to/server.keystore.jks"}, client-auth=true)

/subsystem=security/security-domain=cert-roles-domain/authentication=classic:add

/subsystem=security/security-domain=cert-roles-domain/authentication=classic/login-module=CertificateRoles:add(code=CertificateRoles, flag=required, module-options=[ securityDomain="cert-roles-domain", rolesProperties="${jboss.server.config.dir}/cert-roles.properties",password-stacking="useFirstPass", verifier="org.jboss.security.auth.certs.AnyCertVerifier"])

注意

上例使用 CertificateRoles login 模块来处理身份验证并将角色映射到经过身份验证的主体。它通过使用 rolesProperties 属性引用属性文件。此文件使用以下格式列出了用户名和角色:

user1=roleA
user2=roleB,roleC
user3=

由于提供的证书中的用户名作为 DN 显示,例如 CN=valid-client、OU=JBoss、O=红帽、L=Raleigh、ST=NC、C=US,您必须在使用属性文件时转义特殊字符,如 = 和空格:

角色属性文件示例

CN\=valid-client,\ OU\=JBoss,\ O\=Red\ Hat,\ L\=Raleigh,\ ST\=NC,\ C\=US=Admin

要查看证书的 DN:

$ keytool -printcert -file valid-client.crt
Owner: CN=valid-client, OU=JBoss, O=Red Hat, L=Raleigh, ST=NC, C=US
...
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.