我是Spring的新手,也是SSL身份验证的新手。
我的问题是我有一个Web应用程序可以正常使用基于表单的身份验证。我需要使用SSL客户端身份验证自动验证我的部分应用程序。
到目前为止我做了什么。
更改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 下添加 x509 subject-principal-regex =“CN =(。*?),”user-service-ref =“customUserDetailService”我的security-context.xml
< 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"/>
我的问题是什么是URL路径(甚至/上传)它总是显示login.jsp页面。
我使用Spring和Spring安全性3.1.3与tomcat 6.0.35
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
你必须分开问题:
/upload
个网址以下配置将允许在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>