cas - Apereo CAS 协议:是否允许 CAS 服务器更改 URL?
问题描述
根据 CAS Webflow(https://apereo.github.io/cas/5.0.x/images/cas_flow_diagram.png):
成功认证后,CAS 服务器会向浏览器发送一个重定向,其中包含一个 Cookie 和一个 URL(Location-Header)。此 URL 似乎是最初请求的受保护 URL,并添加了票证参数(包含服务票证)。如果 CAS 服务器在这个 URL 中添加更多的参数,是否违反了 CAS 协议?
在我的实际情况下,用户在 CAS 服务器上进行身份验证时从下拉列表中选择一种语言。然后将此语言参数连同用户名和密码一起提交,CAS 服务器只需将其附加到他在重定向中发送的 URL 中,例如“&lang=fr-FR”。
由于该参数,Apereo Java 客户端会遇到验证失败。这是因为验证服务票证的服务 URL 包含此 lang 参数。然后 CAS 服务器不会验证服务票证,因为它是针对不同的 URL 发出的(没有 lang 参数)。
所以我的问题是:这个特定的 CAS 服务器是否违反了 CAS 协议?
或者,Apereo CAS 客户端是否应该通过在构造服务 URL 以进行验证时剥离所有未知的请求参数来处理这个问题?
解决方案
所以我的问题是:这个特定的 CAS 服务器是否违反了 CAS 协议?
是的。
根据 CAS 协议,service
登录端点是:
service [可选] - 客户端尝试访问的应用程序的 URL。
根据 CAS 协议,service
验证端点是:
service [REQUIRED] - 为其签发票证的服务的标识符
也在错误代码下指定,
INVALID_SERVICE - 提供的票证有效,但指定的服务与票证关联的服务不匹配。CAS 必须使票证无效,并且不允许将来对同一张票证进行验证。
推荐阅读
- google-maps - 从 Google Map API 中提取照片和费率
- windows - 为什么以下对标签的调用会退出脚本?
- python - 类中的 Python Setter 方法没有给出预期的输出
- saml - SAML Web 服务器不属于域
- sql - 如何将 varchar 列溢出到不同的列
- r - libgsl.so.25:无法打开共享对象文件:没有这样的文件或目录
- css - Skype 滚动条的 CSS
- android - 如何在任何条件表达式中使用“何时”?
- django - Django:检查数据库中是否已经存在更新的字段
- owl-carousel - 我需要在 owl carousel 中删除特定宽度的类