在CAS中,如果尚未接受协议,我如何限制只能访问一项服务?

问题描述 投票:3回答:1

要求用户首先接受一些仅存在于serviceA中的许可协议,以便能够登录所有其他服务。

所以这个过程应该是:

  • 用户通过CAS登录。
  • 因为他没有接受协议,所以他只能登录服务
  • 当他接受serviceA协议时,他也可以登录其他服务。

笔记: 无法修改serviceS以外的服务代码。 CAS也可以访问协议接受标志。

使用的CAS版本:5.3.4

java single-sign-on cas
1个回答
4
投票

假设agreement_accepted是身份验证用户的属性,您可以设计两个适用于服务A和所有其他应用程序的访问策略S1和S2。

  • 对于S1,该策略是CAS中的默认策略,其中授予对服务A的访问权限而没有问题。
  • 对于S2,您可以将策略配置为仅授予对应用程序的访问权限并允许CAS发出票证,如果agreement_accepted作为属性具有值,例如true

服务/应用程序的访问策略详述如下:https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html

以此为例:https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html#enforce-attributes

您需要确保将S2分配给所有其他应用程序,但服务A的记录除外。

PS您也可以考虑将CAS版本提高到5.3.8,这是本文撰写时5.3.x中的最新版本。

© www.soinside.com 2019 - 2024. All rights reserved.