Spring security 仅针对特定端口的Spring x.509身份验证

Spring security 仅针对特定端口的Spring x.509身份验证,spring-security,x509,Spring Security,X509,我希望在我的Spring应用程序中有以下场景: 到端口8440的所有连接都具有单边https身份验证(只有服务器经过身份验证) 到端口8441的所有连接都具有两种大小的http身份验证(因此客户端必须提供有效的X.509证书) 如何配置我的spring security.xml文件来实现这一点?理想情况下,我希望能够表达如下内容: <http port=8441 use-expressions="true"> <http-basic entry-point-ref="a

我希望在我的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>


是实现这一点的方法吗?

不幸的是,使用Spring安全性无法实现这一点。客户端身份验证由Servlet容器(或其背后的Web服务器)执行。 您可以配置两个不同的web应用程序。然后,您需要为第一个应用程序配置用于客户端证书身份验证的Servlet容器,并为第二个应用程序仅配置SSL。
Spring Security将允许使用
过滤器获取客户端证书信息

不幸的是,您无法使用Spring Security执行此操作。客户端身份验证由Servlet容器(或其背后的Web服务器)执行。 您可以配置两个不同的web应用程序。然后,您需要为第一个应用程序配置用于客户端证书身份验证的Servlet容器,并为第二个应用程序仅配置SSL。
Spring Security将允许使用
过滤器获取客户端证书信息

很抱歉延迟。这很有帮助。我已将其标记为正确答案:)对不起,耽搁了。这很有帮助。我已将其标记为正确答案:)