成功认证后的 Spring-SAML 无休止的重定向循环

Posted

技术标签:

【中文标题】成功认证后的 Spring-SAML 无休止的重定向循环【英文标题】:Spring-SAML Endless redirect loop after a successful authentication 【发布时间】:2018-07-23 05:50:36 【问题描述】:

SAML 认证成功后:

AuthNRequest;SUCCESS;0:0:0:0:0:0:0:1;https://localhost:8443/saml/metadata;http://www.okta.com/exkdwf3hodKFkefLO0h7;;;

浏览器被重定向回无限循环。

我坐在一个调试器旁,单步执行 Spring 代码,并且看起来它在调用不支持 UsernamePasswordAuthenticationToken 的 SAMLAuthenticationProvider 的 BasicAuthenticationFilter 中出错,并引发异常,进而将浏览器发送到无休止的重定向。

有人见过吗?

【问题讨论】:

【参考方案1】:

在查明问题根源 5 天后,我已通过将 cookie 年龄(过期)设置为与会话年龄相同来解决此问题。似乎具有 ID 的 cookie(对我来说是 JSESSIONID,因为我使用的是 tomcat)

对于我在 tomcat 中的情况,我设置了这个:

<session-config>
    <session-timeout>60</session-timeout>
    <cookie-config>
        <http-only>true</http-only>
        <secure>true</secure>
        <max-age>3600</max-age>
    </cookie-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

现在会话结束后,cookie 也将被删除。可以使用新的 cookie 再次进行身份验证。

【讨论】:

【参考方案2】:

起初我尝试将 Okta 的开发人员指南的解决方案整合到我公司的应用程序中,该应用程序位于:

https://developer.okta.com/blog/2017/03/16/spring-boot-saml

使用 spring-security-saml-dsl 库。

那失败了,不知道为什么是因为 SpringBoot 配置或其他原因。过滤器配置错误,使浏览器陷入无休止的重定向循环。

相反,我回到了带有 XML 配置的 Spring-SAML 项目,它开箱即用,效果很好。

【讨论】:

您能否提供一个适合您的有效 Spring 配置?我无法将 SAML 响应返回到我的 Web 服务器。 克穆阿勒姆。不幸的是,我无法粘贴实际配置,但对我来说,开箱即用的 XML 配置工作得很好。我用这个:github.com/spring-projects/spring-security-saml/blob/develop/…

以上是关于成功认证后的 Spring-SAML 无休止的重定向循环的主要内容,如果未能解决你的问题,请参考以下文章

ADFS 和 Spring-SAML 应用程序之间的循环

我需要撤消重定向插件完成的重定向 URL

ADFS spring-saml 依赖方没有配置 AssertionConsumerService

防止用户直接访问 django 中的重定向 URL

okta认证后的404页面

Symfony 2 中用户切换(模拟)后的重定向