Java Spring框架/Spring安全中基于表单和基于证书的身份验证
在spring框架中,登录页面是否可以同时有2个登录实现?表单登录和基于证书的登录(x509)。我试过这两种方法中的任何一种,但同时将它们结合起来,这对我来说很难做到。你知道如何启用这两种方法吗?关于这一点,我可以参考任何书籍或网站参考资料吗Java Spring框架/Spring安全中基于表单和基于证书的身份验证,java,spring,spring-security,x509,digital-certificate,Java,Spring,Spring Security,X509,Digital Certificate,在spring框架中,登录页面是否可以同时有2个登录实现?表单登录和基于证书的登录(x509)。我试过这两种方法中的任何一种,但同时将它们结合起来,这对我来说很难做到。你知道如何启用这两种方法吗?关于这一点,我可以参考任何书籍或网站参考资料吗 谢谢是的,这是可能的。您只需在http配置中声明x509支持: <http ...> ... <x509 ... /> .... </http> ... .... 并在Tomcat中配置SS
谢谢是的,这是可能的。您只需在http配置中声明x509支持:
<http ...>
...
<x509 ... />
....
</http>
...
....
并在Tomcat中配置SSL
请参阅和。是的,通过使SSL客户端身份验证成为可选的,这是可能的 是一个很好的教程,介绍如何使用X.509证书启用SSL客户端身份验证,以及强制客户端身份验证(不适合您的情况,使用登录表单回退) 按照该教程进行操作,并注意application.properties文件中的内容,以使客户机验证需要而不是需要。这将使客户端-服务器SSL握手尝试请求证书
server.ssl.client-auth=want
- 如果浏览器未提供证书(未配置任何证书,或者当提示用户从列表中选择证书时,用户单击“取消”),则SSL握手将在没有客户端证书的情况下完成,并且用户必须使用用户名+密码登录
- 如果用户选择证书,SSL握手将使用客户端证书完成。然后,服务器验证信任存储中的给定证书。如果证书有效,则成功建立SSL握手。否则,服务器将拒绝连接
- 仅使用x.509证书进行身份验证。对于授权,您必须提供一个实现,为刚刚通过x.509进行身份验证的用户检索
- 因此,如果您有一个具有分配角色的用户数据库,即使证书在信任存储中,用户也可能不在用户数据库中,因此您必须在应用程序逻辑中处理这种可能性。即,当SSL连接是相互的,但用户不在用户数据库中时