由于重写而找不到端点URL

时间:2018-04-24 08:21:26

标签: spring-security spring-security-saml2

我们在项目中使用Spring Security扩展名SAML2。目前我们想要从1.0.0升级到1.0.3但遇到了问题。

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

  

我将问题追溯到完成的检查   SAMLUtil.getEndpoint(...),它期望传入的完全相等   和配置的端点URL,但我们不是这种情况   因为改写。 (实际上,这种方法的行为有   在1.0.0和1.0.3之间变换。)

我正在考虑解决这个问题的一些解决办法,但我想知道我们是否是唯一拥有它的人。我希望,重写网络服务器中的URL并不常见。有一个简单的解决方案,我不知道吗?

1 个答案:

答案 0 :(得分:0)

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

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

   @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;
   }

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