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