本文将深入剖析CAS服务管理原理,包括服务管理整体架构、服务初始化过程、服务更新机制、服务校验过程、以及服务管理工具等。通过本文至少可以有以下收获:
如上图所示,CAS服务管理的整体架构可以分为三层:
服务注册中心负责存储授权服务,它支持多种存储方案,如内存、JSON文件、JPA、Redis、MongoDb等等。
CAS中的服务注册中心实现方案通过实现ServiceRegistry接口来实现:
服务管理器负责管理服务注册中心。正是因为有了服务管理器,才实现了服务存储的透明化,使调用方对服务存储方式无感知。也使服务存储更容易扩展,开发者可以根据自己的需求来实现个性化存储。
CAS中的服务管理器实现方案通过实现ServicesManager接口来实现:
我们在这里将服务管理的调用方的统称为服务管理组件。如登录组件在登录过程中需要通过服务管理器获取授权来校验服务、服务定时器定时更新授权服务、服务初始化组件需要在服务启动时初始化授权服务等等。
启用服务初始化功能后(cas.serviceRegistry.initFromJson=true
),服务启动的第一步就是进行服务初始化,其目的是将注册中心中的授权服务加载到服务管理器中。
服务管理器充当访问服务的缓存层,后续的服务访问都要通过服务管理器。
服务的初始化过程包含以下几步:
不同的服务管理器还会基于servicesMap将服务保存到自己的服务集合中,以实现个性化管理策略。
CAS中的服务更新是通过定时调度来实现的,启用或关闭此功能通过cas.serviceRegistry.schedule.enabled=true/false
来控制。
服务的更新过程包含以下几步:
安全起见,CAS单点登录的过程中都要进行授权服务的校验。
服务的校验过程包含以下几步:
InitialFlowSetupAction
,并将其添加到登录流程里;InitialFlowSetupAction
,来校验服务;未认证授权的服务
提示。通过以上的服务校验过程,可以得到以下结论:
未认证授权的服务
提示,一定是服务匹配问题,要从这方面找原因和解决方案。CAS官方推出的服务管理工具是:CAS Management
。我们这里主要介绍CAS Management的功能和实现原理。
了解完服务的加载、更新机制后,如果有个性化需求,我们也可以实现自己的服务管理工具。
CAS Management在实现了服务管理功能基础上,还有两个核心亮点:服务版本控制和委托用户管理。
服务管理基础功能就不介绍了,已经包含在了服务版本控制流程内。
服务的版本控制是通过在本地建立一个git仓库,然后通过操作这个git仓库,发布后同步到CAS Server服务注册中心中,最后通过服务管理的更新机制,同步到CAS Server中。
服务的版本控制的好处显而易见:
服务版本控制流程:
提交
按钮提交本次变更;发布
按钮,发布
后会将仓库中的服务通过CAS Server服务管理器同步到CAS Server服务注册中心;CAS Management的委托用户管理功能类似github上的PR,在以上服务版本控制的前面多出了PR的步骤,即:
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。