【问题标题】:Endpoint URL not found because of rewriting由于重写,未找到端点 URL
【发布时间】:2018-04-24 08:21:25
【问题描述】:

我们在项目中使用Spring SecuritySAML2 扩展名。目前我们想从版本 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 并不少见。有没有我不知道的简单解决方案?

【问题讨论】:

    标签: spring-security spring-security-saml2


    【解决方案1】:

    尝试提供 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;
       }
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多