Spring security 由于重写,找不到终结点URL

Spring security 由于重写,找不到终结点URL,spring-security,spring-security-saml2,Spring Security,Spring Security Saml2,我们在项目中使用Spring-Security和SAML2扩展。目前,我们希望从1.0.0版升级到1.0.3版,但遇到问题 我们的应用程序运行在一个Tomcat中,它前面有一个apachewebserver。Web服务器执行URL重写,这意味着到达Tomcat的请求与Web服务器上的请求具有不同的URL(例如,在Web服务器上为“/saml/SSO”,但在Tomcat中为“/ctx/saml/SSO”) 我把问题追溯到年做的检查 getEndpoint(…),它期望传入的 和配置的端点URL,但

我们在项目中使用
Spring-Security
SAML2
扩展。目前,我们希望从1.0.0版升级到1.0.3版,但遇到问题

我们的应用程序运行在一个
Tomcat
中,它前面有一个apachewebserver。Web服务器执行URL重写,这意味着到达Tomcat的请求与Web服务器上的请求具有不同的URL(例如,在Web服务器上为“/saml/SSO”,但在Tomcat中为“/ctx/saml/SSO”)

我把问题追溯到年做的检查 getEndpoint(…),它期望传入的 和配置的端点URL,但我们不是这样 因为重写。(实际上,这种方法的行为已经发生了变化 在1.0.0和1.0.3之间更改。)


我正在考虑一些解决这个问题的办法,但我想知道是否只有我们有这个问题。我想,在Web服务器中重写URL并不少见。有没有我不知道的简单解决方案?

尝试提供SAMLContextProviderLB Bean的实例,而不是SAMLContextProviderImpl:

java配置示例(如果需要,将其改编为xml):


并根据您的反向代理虚拟主机服务器名设置服务器名。

谢谢,这正是我要找的:-)如果您是在这个项目上构建的:记住删除WebSecurity配置中的默认SAMLContextProviderImpl,否则SAMLContextProviderLB将不会生效,spring也不会抱怨。
   @Bean
   public SAMLContextProviderImpl contextProvider() {
       SAMLContextProviderLB samlContextProviderLB = new SAMLContextProviderLB();
       samlContextProviderLB.setScheme("https");
       samlContextProviderLB.setServerName("myserver.com");
       samlContextProviderLB.setServerPort(443);
       samlContextProviderLB.setIncludeServerPortInRequestURL(false);
       samlContextProviderLB.setContextPath("/mycontextpath");
       return samlContextProviderLB;
   }