【问题标题】:Apereo CAS Protocol: is it allowed for the CAS Server to change the URL?Apereo CAS 协议:是否允许 CAS 服务器更改 URL?
【发布时间】:2020-04-20 14:01:12
【问题描述】:

根据 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 apereo


    【解决方案1】:

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

    是的。

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

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

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

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

    也在错误代码下指定,

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

    【讨论】:

    • 我认为这里的问题不是服务参数,而是重定向中的位置标头。我很难找到这个位置标头必须包含的规范。它肯定不是最初请求的 URL,因为它至少包含票证参数。而且,在这种情况下,还有 lang 参数。
    猜你喜欢
    • 2020-04-20
    • 2020-06-04
    • 2020-04-19
    • 2019-06-06
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多