【问题标题】:Spring boot+ Spring SAML not working for NGINX proxy_passSpring Boot Spring SAML 不适用于 NGINX proxy_pass
【发布时间】:2017-04-22 21:16:49
【问题描述】:

我有一个结构,我的休息服务 (SP) 是使用 spring boot + Spring SAML 进行身份验证和 UI 使用 Nginx 作为反向代理构建的。 如果通过使用直接 URL 的返回/重写调用服务一切正常:调用 IDP 获得身份验证并返回响应。 但是,如果我使用 proxy_pass 调用相同的服务,它会因响应的 InResponseToField 与发送的消息不对应而失败

我有 UI 使用 NGINX 作为 Web 服务器并通过 NGINX 调用 SP 的结构。 SP 在 LB 下具有多个实例。使用 SAMLContextProviderLB 作为上下文提供者。

如何使用 Nginx 进行此调用。

【问题讨论】:

    标签: spring-boot spring-saml


    【解决方案1】:

    我怀疑您的 Nginx 未配置为使用粘性会话。这导致来自 IDP 的响应可能会落在不知道最初从其他服务器发送的请求的服务器上,因此无法验证它。 Spring SAML 手册说:

    确保您的反向代理或负载平衡器配置为 使用粘性会话。

    有多种可能的解决方案:

    • 在 Nginx 上启用粘性会话,以便响应发送到发送它的同一服务器
    • 禁用对 InResponseTo 字段的验证(有关详细信息,请参阅 manual
    • 启用 HTTP 会话复制,因此包含已发送请求的 HttpSession 将分发到所有服务器 - 为此请参阅例如spring-session

    【讨论】:

    • 谢谢弗拉迪。你的回应总是有帮助的。关于您的建议,我发布了我的下一组问题。请为那些建议。
    猜你喜欢
    • 2018-04-19
    • 2015-04-13
    • 2018-10-18
    • 2015-06-23
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2018-07-04
    • 2023-03-26
    相关资源
    最近更新 更多