【发布时间】:2015-04-21 16:12:38
【问题描述】:
我正在尝试使应用程序能够使用 Spring 的 Client-Auth 安全性。这是我的配置:
<security:http pattern="/api/**" >
<security:x509 subject-principal-regex="CN=(.*?),"
user-service-ref="x509UserService" />
<security:intercept-url pattern="/api/**" access="IS_AUTHENTICATED_FULLY" requires-channel="https" />
</security:http>
如果我没有在 web.xml 或 tomcat 的 server.xml 中配置任何内容,则永远不会提示浏览器随请求一起发送证书。因此,它总是在 org.springframework.security.web.authentication.preauth.x509.X509AuthenticationFilter.extractClientCertificate(HttpServletRequest) 方法中返回 null。
是否需要配置一些特殊的东西才能让 Spring 参与 SSL 流程并请求客户端证书?
任何帮助将不胜感激。
如果我在 server.xml 连接器配置中指定 clientAuth='want',则无论他们是否访问 /api 路径,都会提示所有人提供证书,这会产生不良副作用。
同样,如果我将 login-config 和 auth-method 指定为 CLIENT-CERT,它也会挑战用户,但是我基本上必须复制我在春季(或所以看起来)。
【问题讨论】:
标签: authentication spring-security x509