我尝试启用应用程序以使用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流并请求客户端证书?
任何帮助都将不胜感激。
如果我指定clientAuth =&#39;想要&#39;在server.xml连接器配置中,这会产生不良的副作用,即无论是否访问/ api路径,都会提示每个人提供证书。
同样,如果我将login-config和auth-method指定为CLIENT-CERT,它也会挑战用户,但是我基本上必须复制我在春天做的所有证书检查(或者看起来似乎)。
答案 0 :(得分:0)
根据您当前的java和构建类型,您至少需要包含类似于
的内容。<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
或者如果您正在使用带弹簧的Java配置......
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}