在 CAS 中,如果尚未接受协议,我如何限制对一项服务的访问?
In CAS how can I restrict access to only one service if agreement is not yet accepted?
要求用户首先接受一些许可协议,该协议仅存在于服务A中,以便能够登录所有其他服务。
所以流程应该是:
- 用户通过CAS登录。
- 因为他没有接受协议所以只能登录serviceA
- 当他接受服务A的协议后,他也可以登录其他服务。
备注:
serviceA以外的服务代码不可修改
CAS 还可以访问 agreement_accepted 标志。
使用的 CAS 版本:5.3.4
假设agreement_accepted
是认证用户的一个属性,你可以设计两种访问策略,S1和S2,适用于服务A和所有其他应用程序。
- 对于 S1,该策略是 CAS 中的默认策略,其中可以毫无问题地授予对服务 A 的访问权限。
- 对于 S2,您可以将策略配置为仅授予对应用程序的访问权限并允许 CAS 发出票证,如果
agreement_accepted
作为属性的值为 true
.
services/applications 的访问策略详见此处:
https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html
您需要确保将 S2 分配给所有其他应用程序,但服务 A 的记录除外。
PS 您也可以考虑将 CAS 版本升级到 5.3.8,这是 5 中的最新版本。3.x 在撰写本文时。
要求用户首先接受一些许可协议,该协议仅存在于服务A中,以便能够登录所有其他服务。
所以流程应该是:
- 用户通过CAS登录。
- 因为他没有接受协议所以只能登录serviceA
- 当他接受服务A的协议后,他也可以登录其他服务。
备注:
serviceA以外的服务代码不可修改
CAS 还可以访问 agreement_accepted 标志。
使用的 CAS 版本:5.3.4
假设agreement_accepted
是认证用户的一个属性,你可以设计两种访问策略,S1和S2,适用于服务A和所有其他应用程序。
- 对于 S1,该策略是 CAS 中的默认策略,其中可以毫无问题地授予对服务 A 的访问权限。
- 对于 S2,您可以将策略配置为仅授予对应用程序的访问权限并允许 CAS 发出票证,如果
agreement_accepted
作为属性的值为true
.
services/applications 的访问策略详见此处: https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html
您需要确保将 S2 分配给所有其他应用程序,但服务 A 的记录除外。
PS 您也可以考虑将 CAS 版本升级到 5.3.8,这是 5 中的最新版本。3.x 在撰写本文时。