我们在项目中使用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并不常见。有一个简单的解决方案,我不知道吗?
答案 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;
}
根据您的反向代理虚拟主机服务器名称设置服务器名称。