cas - 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.) 是否可以为过期的服务票禁用太多重定向错误,以便最终用户被重定向到登录页面,而不是首先在浏览器上看到错误消息?
谢谢。
解决方案
无论如何可以禁用错误,而是将页面重定向到应用程序登录页面。
与 SSO 解决方案(例如 CAS)集成的应用程序没有/不应该有自己的登录页面。毕竟,这就是他们使用 CAS 的原因。
也就是说,要处理此错误,您需要修改 CAS 登录 webflow,并使用 Spring Webflow 调用的Global Exception Handler正确捕获此错误。只有这样,您才能决定如何响应和处理具有不良流执行状态的场景。
无论如何,是否可以为过期的服务票禁用太多重定向错误,以便最终用户被重定向到登录页面,而不是首先在浏览器上看到错误消息?
是的。有。
您需要让应用程序正确响应失败的验证尝试。如果由于票证过期而导致验证失败,应用程序应该接受失败,并请求新的未过期服务票证。
您可能还需要调整服务票证超时时间;可能存在滞后或延迟,以至于票证在到达应用程序时被视为已过期,并被发送回 CAS 进行验证。
停止无限重定向循环的最佳方法是停止导致或发送这些循环的实体,并纠正错误,而不是用错误消息隐藏它。那只是一种阿司匹林,虽然它有帮助,但它并不能解决根本问题。
到登录页面而不是首先在浏览器上看到错误消息?
没有登录页面或要重定向到的浏览器。失败是反向通道验证调用的结果。没有浏览器。
推荐阅读
- node.js - 在子进程和分叉进程节点js之间共享对象
- blob - bootstrap-vue 如何将 FileReader 转换为 blob 并上传到服务器?
- amazon-web-services - 角色无权在 KinesisStream 上执行 DescribeStream
- javascript - 如何从 Node.js 获取 Vue 中的数据
- vue.js - 未找到模块:错误:无法解析“C:\HK\Vue-learning\testapp1\src”中的“./router”
- nginx - nginx 仅在端口 80 和 8080 上启用 https
- python - 集中式 Python 日志记录 - 无法导入日志记录文件
- flutter - 当来自 Firebase 时,颤动文本输出不抛出段落行
- android - Google 弃用 install_referrer - Android
- go - 为什么地图遍历是顺序的?