我对Spring有点新,也是SSL身份验证的新手 .
我的问题是我有一个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" />
- 在我的security-context.xml中的 http 下添加了 x509 subject-principal-regex="CN=(.*?)," user-service-ref="customUserDetailService"
< 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"/>
-
添加 < intercept-url pattern="/upload" requires-channel="https" /> 以保护网址
-
myUserDetailService正在实现UserDetailsService并返回UserDetails对象(我用于基于表单的身份验证的同一个类,基于数据库存储的用户名,密码,ROLES) .
我的问题是什么URL路径(甚至/上传)它总是显示login.jsp页面 .
我使用Spring和Spring安全性3.1.3与tomcat 6.0.35
任何帮助将受到高度赞赏 .
1 回答
你必须分开问题:
通过客户端证书身份验证对所有
/upload
URL进行身份验证通过表单身份验证其他URL进行身份验证
以下配置将允许在SpringSecurity 3.1中单独解决这些问题: