1、概述
在前一篇文章(https://www.jianshu.com/p/2cb32d9cc11c)中阐述了几种常用的单点登录协议。这一篇将结合前后端分离和微服务中API Gateway来讲解单点登录模块,并给出不同场景中的一个方案。
2、多站点域名相同方案(根据URL路径区分不同站点)
说明:由于域名统一,不同站点可以通过Cookie来共享身份认证标志。这时可以直接集成认证授权服务到API Gateway中。后端服务无需再进行分别验证。
优点:好实现;认证授权可以放在网关,后端可以做到无侵入。
缺点:网关负载变大;对域名限制要求严,只能用一个域名。
3、多站点主域相同、子域不同
说明:由于子域名统一(比如:系统A的域名为A.example.com,系统B的域名为B.example.com),不同站点可以通过Cookie来共享身份认证标志。这时可以直接集成认证授权服务到API Gateway中。后端服务无需再进行分别验证。
优点:好实现;认证授权可以放在网关,后端可以做到无侵入。
缺点:网关负载变大;对域名限制要求较严,域名后缀要求相同。
4、多站点域名不同
多站点域名不同较前两者解决起来较复杂,因为域名不同就意味着不能通过共享Cookie方式来标志身份认证。一般的解决方案是采用第三个域名(即统一认证中心的域名),加上HTTP的重定向来解决(具体流程可以参考前一章节https://www.jianshu.com/p/2cb32d9cc11c)。
4.1、CAS方案
优点:网关负载较前面两者低;对域名使用无限制;
缺点:后端不能做到无侵入;认证授权服务无法集成在网关中;
4.2、Spring security OAuth2 SSO方案
优点:网关负载较前面两者低;对域名使用无限制;。
缺点:后端不能做到无侵入;认证授权服务无法集成在网关中。
4.3、Kisso方案
优点:网关负载较前面两者低;对域名使用无限制;对Cookie做了加密;由于使用了公钥私钥,安全性较高;
缺点:后端不能做到无侵入;认证授权服务无法集成在网关中;
4.4 自定义方案
说明:此方案意图把统一认证中心放在API Gateway上,且做到后端真正的无侵入。
优点:后端无侵入
缺点:API网关负载大,不易维护(例如重定向配置等)。
5、 总结
可以看出重定向是实现单点登录的重要手段。每种方案都有优缺点,需要结合实际需求来决定选取哪种单点登录方案。