根据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服务器上进行身份验证时,用户从下拉列表中选择一种语言。然后,这个lang-Parameter与用户名和密码一起提交,CAS服务器只需将其附加到他在重定向中发送的URL中,就像"&lang=fr-fr"一样。
Apereo Java客户端由于该参数而导致验证失败。这是因为用于验证服务票证的服务URL包含此lang参数。CAS服务器不验证服务票证,因为它是为不同的URL颁发的(没有lang参数(。
所以我的问题是:这个特定的CAS服务器是否违反了CAS协议?
还是希望Apereo CAS客户端在构建用于验证的服务URL时剥离所有未知请求参数来处理此问题?
所以我的问题是:这个特定的CAS服务器是否违反了CAS协议?
是。
根据CAS协议,登录端点的service
为:
service[OPTIONAL]-客户端尝试访问的应用程序的URL。
根据CAS协议,验证端点的service
为:
service[REQUIRED]-为其发出票证的服务的标识符
也在错误代码下指定,
INVALID_SERVICE-提供的票证有效,但指定的服务与票证关联的服务不匹配。CAS必须使票据无效,并禁止未来对同一票据进行验证。