我们通常所使用的的单点登陆工具CAS以及Keycloak等,可以在一定的环境下做到多个应用统一登录的功能,确实提供了不少的方便,但是如果是面临多个单点登录工具以及本地登录的结合将如何对接呢,大公司或许只有一个稳定的单点登录平台,但是对于小公司尤其是三方公司就不一定了,针对这一情况,特意提出了一个可定制化的架构,只需要简单的配置,就可实现多种单点登陆工具与本应用的解耦,架构图如下所示:
中间为控制转发服务器control,用来注册应用app与单点代理service的对应关系,而service是实际的单点配置端,
每个service对应一个单点登录服务,有多少个单点服务,就可以对接多少个service,app发起请求,
会被control转发到对应的service,service单点登录成功以后,将结果通过control返回给对应的app,
这样app就可以实现单点登录。
并且在此框架运行期间,control以及已有的app与service可以不受任何影响的扩展,只要将app与与之对应的service注册到control,
然后启动新的app与service,就可以实现单点登录功能,简单方便不停机。
流程如下:
当然这只是设计中的一小部分。
对于其可实现性,已经实现,这也是在解决实际问题中突然出现的一个想法,然后被我做成一个项目,在这里只是将思想分享一下。
希望对大家有所帮助。
还有实现细节可能并没有描述的这么简单,在项目开发时也参考了keycloak以及cas的实现方式,当然由于面对的问题无法用他们解决,所以自己设计了一个简单易用的框架。