首页 > 解决方案 > 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 以进行验证时剥离所有未知的请求参数来处理这个问题?

标签: casapereo

解决方案


所以我的问题是:这个特定的 CAS 服务器是否违反了 CAS 协议?

是的。

根据 CAS 协议,service登录端点是:

service [可选] - 客户端尝试访问的应用程序的 URL。

根据 CAS 协议,service验证端点是:

service [REQUIRED] - 为其签发票证的服务的标识符

也在错误代码下指定,

INVALID_SERVICE - 提供的票证有效,但指定的服务与票证关联的服务不匹配。CAS 必须使票证无效,并且不允许将来对同一张票证进行验证。


推荐阅读