2

我试图弄清楚在现有 Spring Security 实现中在何处以及如何实现 PKI 身份验证。

我在 tomcat 中更改了 server.xml 的配置,使其具有两个连接器来处理“普通”用户名和密码身份验证,然后是“PKI”身份验证。不同之处在于 PKI 连接器启用了 clientAuth 并指向机器上颁发的信任库。

这允许用户选择他们想要的身份验证方式,他们可以单击正常的用户名/密码身份验证转到一个连接器,或者他们可以单击 PKI 身份验证来使用另一个。我的 tomcat 配置正确提示用户使用他们的证书并输入他们的 pin,在该 pin 处我收到带有 X509Certificate 证书链的 HttpServletRequest。

所以现在我已经设置好了,如何配置 Spring Security 以允许任何一种形式的身份验证?我试图弄清楚如何使用证书的 EDI 作为用户名/密码的替换,并且仍然进行安全检查,例如检查到期日期、查看卡是否被吊销等。

非常感谢任何想法或链接,谢谢!

4

1 回答 1

2

如果我理解正确,您在不同的端口和登录页面上已经有不同的 tomcat 连接器,允许用户选择连接器。现在您想在其中一个连接器上设置 X.509 身份验证。

来自 spring 文档的插入式 X.509 配置有效 - 它从证书中提取 CN 并将其用作用户名。

但是,如果您想要微调或更多地控制身份验证,您必须使用普通的 bean 配置来设置springSecurityFilterChain您可以在此处找到此类配置的工作示例。

于 2012-03-18T21:39:22.037 回答