【问题标题】:Configuring Spring Security for X509 client authentication, it isn't prompting browser for certificate为 X509 客户端身份验证配置 Spring Security,它不会提示浏览器输入证书
【发布时间】: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


    【解决方案1】:

    根据您当前的 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>
    

    或者,如果您正在使用带有 spring 的 Java 配置...

    public class SecurityWebApplicationInitializer 
       extends AbstractSecurityWebApplicationInitializer {
     }
    

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 1970-01-01
      • 2019-01-24
      • 2018-03-20
      • 2018-09-16
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2019-06-28
      相关资源
      最近更新 更多