当前位置: 首页 > 知识库问答 >
问题:

使用Spring 3.1的混合模式X509身份验证

帅令雪
2023-03-14

我的问题是,我有一个web应用程序可以很好地处理基于表单的身份验证。我需要我的应用程序的一部分使用SSL客户端身份验证进行自动身份验证。

到目前为止我所做的。

>

  • SSL启用tomcat(我可以访问https://mydomain.com:9443)
  • 将客户端证书导入服务器信任存储
  • 更改server-xml并在我的server.xml中设置clientauth=“want”

    Connector port="9443" 
    protocol="HTTP/1.1" 
    SSLEnabled="true"
    maxThreads="150" 
    scheme="https" 
    secure="true"
    clientAuth="want" 
    sslProtocol="TLS" 
    keystoreFile="c:\serverkeystore"
    keystorePass="ChangeIt" />
    
    < http auto-config="true" use-expressions="true" >
        < x509 subject-principal-regex="CN=(.?)," user-service-ref="myUserDetailService" />
       < intercept-url pattern="/upload" requires-channel="https" />
       < intercept-url pattern="/*" access="hasRole('ROLE_USER')" />
        < form-login login-page="/login.jsp" 
                   default-target-url="/index.jsp"
    authentication-failure-url="/login.jsp?error=1" /> < logout logout-url="/j_spring_security_logout" logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/>

    我将Spring和Spring security 3.1.3与tomcat 6.0.35一起使用

    如有任何帮助,我们将不胜感激。

  • 共有1个答案

    巩才捷
    2023-03-14

    你必须把问题分开:

    1. 通过客户端证书身份验证所有/uploadURL
    2. 通过表单身份验证其他URL进行身份验证

    以下配置将允许在SpringSecurity 3.1中单独解决这些问题:

    <http pattern="/upload/**" >
        <intercept-url pattern="/*" access="hasRole('ROLE_USER')" requires-channel="https"/>
        <x509 subject-principal-regex="CN=(.?)," user-service-ref="myUserDetailService" />
    </http>
    
    <http use-expressions="true">
        <intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
        <intercept-url pattern="/**" access="ROLE_USER"/>
        <form-login login-page="/login.jsp" 
               default-target-url="/index.jsp"
               authentication-failure-url="/login.jsp?error=1"  />
        <logout logout-url="/j_spring_security_logout" logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/>
    </http>
    
     类似资料:
    • 您好,我是Spring security的新手, 我的任务是通过匹配从x509客户端证书检索到的用户名,根据active directory对用户进行身份验证。到目前为止,我所做的是启用ssl相互身份验证 现在我有了安全措施,上面的部分工作正常。xml文件,我在其中配置了与x509参考和Active directory配置相关的所有内容 现在我面临的问题是,当我试图检索SecurityContex

    • 我对Spring security和Spring social比较陌生。我正在尝试使用标准Spring Security或Spring social Facebook实现混合身份验证。 因此,用户可以进行身份验证: 使用标准Spring Security登录表单,如下所示: my Thymeleaf模板中的片段: 这工作正常,就像用户向受保护的资源发送请求一样,例如受以下interser-url保

    • 我有一个传统的Asp。Net/MVC/Razor WebApp,使用表单身份验证。 现在,由于一些用户拥有Azure广告帐户,我添加了一个特殊的广告登录按钮以及常用的代码,以使其正常工作 使用按钮登录后,我在网址中进入以下内容: 因此,在我的网站。我评论道: 在这个阶段,Azure AD身份验证工作正常!但是这样做,我打破了原来的窗体认证:-( 只是打电话而已 这是不够的:我仍然得到重定向到Azu

    • 我有一个遗留应用程序,我正在将它从用户密码转换为使用基于证书的身份验证。我使用的是Tomcat7,我的应用程序需要根据用户试图访问的应用程序中的URL支持4种类型的安全性 例如:少数servlet将使用HTTP少数servlet将使用HTTPS而不进行任何身份验证少数servlet将使用PKI进行相互身份验证,但是用户不会被预先知道,因此任何在证书链中拥有有效证书的用户都将被授予访问权限。应用程序

    • 问题内容: 是否有人对如何使用HTTPClient 4.0.1通过x509证书执行客户端身份验证有任何友好的提示? 感谢您的时间。 问题答案: 这是一些代码,助您一臂之力。该是包含客户端证书的对象。如果服务器使用的是自签名证书,或者包含的cacerts文件中的JVM认可的不是CA所签名的证书,则需要使用。否则,要使用默认的cacerts文件,请传递给truststore参数。

    • 我试图让Spring Security的基本身份验证与JWT令牌身份验证同时工作,但没有成功。我已经为web控制台和JWT实现了基本身份验证,以保护许多APIendpoint。下面是我的配置: } 我注意到,我用Order(1)注释的配置是Spring Security选择的配置,而另一个完全被忽略。像上面的配置一样,如果我尝试访问/console/login,我会得到401错误。任何帮助都将不胜