Java Spring框架/Spring安全中基于表单和基于证书的身份验证

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

在spring框架中,登录页面是否可以同时有2个登录实现?表单登录和基于证书的登录(x509)。我试过这两种方法中的任何一种,但同时将它们结合起来,这对我来说很难做到。你知道如何启用这两种方法吗?关于这一点,我可以参考任何书籍或网站参考资料吗


谢谢

是的,这是可能的。您只需在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连接是相互的,但用户不在用户数据库中时

谢谢你的回答。我遇到的问题是在我的登录页面上,我有两个登录身份验证。基于表单和证书的身份验证。我在tomcat的server.xml中将clientAuth参数设置为“want”,当我访问登录页面时,它要求我选择一个证书。我只想在单击证书验证按钮=)后选择一个证书。那可能吗?怎么做?=)您使用哪个版本的Tomcat?您能试试clientAuth=“可选”吗?嗨,Maksym Demidas。我正在使用Tomcat 6.0.36。我在tomcat文档中没有看到“可选”的值。设置为“可选”并提示用户为选定的受保护页面选择证书是否有效?我不希望浏览器要求我为登录页选择证书=)。Thanks@MaksymDemidas:参考链接已断开,请更新到当前-