首页 > 解决方案 > CAS 重定向过多和 500 内部服务器错误

问题描述

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

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

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

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

谢谢。

标签: casapereo

解决方案


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

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

也就是说,要处理此错误,您需要修改 CAS 登录 webflow,并使用 Spring Webflow 调用的Global Exception Handler正确捕获此错误。只有这样,您才能决定如何响应和处理具有不良流执行状态的场景。

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

是的。有。

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

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

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

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

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


推荐阅读