我对 Spring 有点陌生,也是 SSL 身份验证的新手。
我的问题是我有一个 Web 应用程序,它可以很好地与基于表单的身份验证配合使用。我需要使用 SSL 客户端身份验证自动对我的应用程序的一部分进行身份验证。
到目前为止我所做的。
- SSL启用tomcat(我可以访问https://mydomain.com:9443)
- 将客户端证书导入服务器信任库
更改 server-xml 并在我的 server.xml 中设置 clientAuth="want"
连接器端口="9443" 协议="HTTP/1.1" SSL启用=“真” maxThreads="150" 方案="https" 安全=“真” clientAuth="想要" sslProtocol="TLS" keystoreFile="c:\serverkeystore" keystorePass="ChangeIt" />
在我的 security-context.xml 中的http 下添加了 x509 subject-principal-regex="CN=(.*?)," user-service-ref="customUserDetailService"
< http auto-config="true" 使用表达式="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-url="/j_spring_security_logout" logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/>
- 添加<intercept-url pattern="/upload" requires-channel="https" />以保护 url
- myUserDetailService正在实现 UserDetailsService 并返回 UserDetails 对象(我用于基于表单的身份验证的同一类,基于数据库存储的用户名、密码、角色)。
我的问题是任何 URL 路径(即使使用 /upload)它总是向我显示 login.jsp 页面。
我正在使用 Spring 和 Spring security 3.1.3 和 tomcat 6.0.35
任何帮助将不胜感激。