成功认证后的 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 无休止的重定向循环的主要内容,如果未能解决你的问题,请参考以下文章