0

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

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

我将问题追溯到在 SAMLUtil.getEndpoint(...) 中完成的检查,它期望传入和配置的端点 URL 完全相等,但由于重写,我们的情况并非如此。(实际上,此方法的行为在 1.0.0 和 1.0.3 之间发生了变化。)

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

4

1 回答 1

0

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

java config 示例(如果需要,将其调整为 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;
   }

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

于 2018-04-24T10:31:10.143 回答