Spring x.509仅针对特定端口进行身份验证

时间:2013-05-10 09:01:44

标签: spring-security x509

我想在我的Spring应用程序中有以下场景:

  • 到端口8440的所有连接都具有单侧https身份验证(仅对服务器进行身份验证)
  • 到端口8441的所有连接都有两个大小的http身份验证(因此客户端必须提供有效的X.509证书)

如何配置我的spring-security.xml文件来实现此目的?理想情况下,我希望能够表达这样的内容:

<http port=8441 use-expressions="true">
  <http-basic entry-point-ref="ambariEntryPoint" />
  <intercept-url pattern="/**" access="permitAll()" method="GET"/>
  <intercept-url pattern="/**" access="hasRole('ADMIN')" method="DELETE"/>
  <x509 subject-principal-regex="(.*)" />
</http>
<http port=8440 use-expressions="true">
  <http-basic entry-point-ref="ambariEntryPoint" />
  <intercept-url pattern="/**" access="permitAll()" />
</http>

这是实现这个目标的方法吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能用Spring Security做到这一点。客户端身份验证由Servlet容器(或其后面的WebServer)执行。 您可以配置两个不同的Web应用程序。然后,您需要为第一个应用程序配置Servlet容器以进行客户端证书身份验证,并为第二个应用程序配置SSL。 Spring Security将允许使用<x509>过滤器

获取客户端证书信息