Authentication 为X509客户端身份验证配置Spring安全性,它不是';t提示浏览器获取证书
我试图使应用程序能够使用spring的客户端身份验证安全性。以下是我的配置:Authentication 为X509客户端身份验证配置Spring安全性,它不是';t提示浏览器获取证书,authentication,spring-security,x509,Authentication,Spring Security,X509,我试图使应用程序能够使用spring的客户端身份验证安全性。以下是我的配置: <security:http pattern="/api/**" > <security:x509 subject-principal-regex="CN=(.*?)," user-service-ref="x509UserService" /> <security:intercept-url pattern="/api/**" access="IS_AUTHENTICATE
<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方法指定为CLIENT-CERT,它也会对用户提出挑战,但是我基本上必须复制我在spring中所做的所有证书检查(或者看起来是这样)。取决于您当前的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>
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}