【问题标题】:CAS too many redirects and 500 internal server errorCAS 重定向过多和 500 内部服务器错误
【发布时间】:2021-11-13 09:22:24
【问题描述】:

我正在使用由 CAS Overlay 项目生成的 Apereo CAS 6.3.3。 与应用程序和 LDAP 的集成运行良好,但我注意到了两个问题。这些问题是随机的,仅在 20% 的请求中发生。

1.) 如果有人使用 ?execution=anything 直接访问 CAS 登录页面,该页面会显示以下 HTTP 500 错误。 org.springframework.webflow.execution.repository.BadlyFormattedFlowExecutionKeyException:错误格式的流执行键'anything',预期格式为'_'

无论如何可以禁用错误,而是将页面重定向到应用程序登录页面。

2.) 是否可以为过期的服务票禁用太多重定向错误,以便最终用户被重定向到登录页面,而不是首先在浏览器上看到错误消息?

谢谢。

【问题讨论】:

    标签: cas apereo


    【解决方案1】:

    无论如何可以禁用错误,而是将页面重定向到应用程序登录页面。

    与 SSO 解决方案(如 CAS)集成的应用程序没有/不应该有自己的登录页面。毕竟,这就是他们使用 CAS 的原因。

    也就是说,要处理此错误,您需要modify the CAS login webflow,并让它使用 Spring Webflow 调用的全局异常处理程序正确捕获此错误。只有这样,您才能决定如何响应和处理具有不良流执行状态的场景。

    是否可以为过期的服务票禁用太多重定向错误,以便最终用户被重定向到登录页面,而不是首先在浏览器上看到错误消息?

    是的。有。

    • 您需要让应用程序正确响应失败的验证尝试。如果由于票证过期而导致验证失败,应用程序应接受失败,并请求新的未过期服务票证。

    • 您可能还需要调整服务票证超时时间;可能存在延迟或延迟,以至于票证在到达应用程序时被视为已过期,并被发送回 CAS 进行验证。

    停止无限重定向循环的最佳方法是停止导致或发送这些循环的实体,并纠正错误,而不是用错误消息隐藏它。这只是一种阿司匹林,虽然有帮助,但它并不能解决根本问题。

    到登录页面而不是首先在浏览器上看到错误消息?

    没有登录页面或重定向到的浏览器。失败是反向通道验证调用的结果。没有浏览器。

    【讨论】:

    • 谢谢@misah。我想我能够弄清楚为什么会发生这种情况,但不知道这是如何触发的。根据日志,客户端请求 ST 并成功验证,但在少数情况下,验证请求会与同一个 ST 一起再次发送,这就是触发验证失败的原因,因为 ST 在单次使用后已经过期。这一切都在几秒钟内发生。我今天将 cas.ticket.st.number-of-uses 值增加到 3,看看是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2014-01-11
    • 1970-01-01
    • 2019-01-17
    相关资源
    最近更新 更多