SSO的简单实现思路 (参考淘宝天猫的SSO实现)
三个系统实现跨域访问: A系统,B系统,SSO系统
登录:
访问A时,发现没登录,跳转到SSO登录后,跳转回来
访问B系统:
访问B时,ajax到B确实是否登录 ?
> 用户在B系统登录了,那么照常操作即可
> 用户没有在B系统登录,则302 或者另外发一个ajax 跨域到SSO拿登录信息 (类似于 https://login.taobao.com/jump?target=https%3A%2F%2Ftmcc.tmall.com...)。
>> SSO如果没登录,则跳转去登录即可。
>> SSO如果登录了,则返回加密后的用户信息及登录凭证。此时302 或者 另外发一个ajax 将 加密后的用户信息及登录凭证 交给B系统,进行session和cookie的创建,进行B系统登录 。
(类似于 https://pass.tmall.com/add?t=xxx&lgc=xxx&_tb_token_=xxx......)
其中有一个细节要注意:
如果B系统登录的请求还未完成,要阻塞前端其他系统自动发出的ajax。