2.6. 配置身份提供程序以使用基于证书的身份验证
除了将 SP 和 IDP 配置为使用 SSL/TLS 外,您还可以将 IDP 配置为使用基于证书的身份验证。在设置 IDP 以使用基于证书的身份验证之前,您需要将 IDP 和 SP 配置为使用 SSL/TLS。
创建客户端证书和信任存储。
您必须创建一个证书和信任存储,供客户端用于进行身份验证。您需要在服务器配置以及客户端的浏览器中使用它们。
客户端证书和信任存储示例
$ keytool -genkeypair -alias client -storetype jks -keyalg RSA -keysize 2048 -keypass change_it -keystore client.jks -storepass change_it -dname "CN=client,OU=Sales,O=Systems Inc,L=Raleigh,ST=NC,C=US" -validity 730 -v $ keytool -export -alias client -keystore client.jks -storepass change_it -file client.cer $ keytool -import -file client.cer -alias client -keystore client.truststore为 IDP 创建安全域.
您需要创建一个安全域,它使用基于证书的登录模块供 IDP 用于身份验证。有关基于证书的登录模块的详情,请查看Login 模块参考。
使用 CertificateRoles 登录模块的安全域示例
/subsystem=security/security-domain=idp-cert:add /subsystem=security/security-domain=idp-cert/authentication=classic:add /subsystem=security/security-domain=idp-cert/authentication=classic/login-module=CertificateRoles:add(code=CertificateRoles,flag=optional,module-options=[("password-stacking"=>"useFirstPass"),("securityDomain"=>"idp-cert"),("verifier"=>"org.jboss.security.auth.certs.AnyCertVerifier")]) /subsystem=security/security-domain=idp-cert/jsse=classic:add(truststore={url=>"/path/to/client.jks",password=>change_it}) reload您还需要将 IDP 配置为使用此安全域。有关配置 IDP 的详情,请参阅设置 IDP 部分。
注意您还可以将
RegExUserNameLoginModule与证书登录模块结合使用,以从主体名称中提取用户名、UID 或其他信息。有关RegExUserNameLoginModule的详情,请查看 JBoss EAP 登录模块参考。- 将客户端证书导入到客户端的浏览器中。完成 IDP 和服务器配置后,您必须将客户端浏览器配置为使用客户端证书。这种配置因浏览器而异。将客户端的浏览器配置为使用客户端证书后,客户端将能够使用该证书与 IDP 进行身份验证。