描述
要求:
1、所有子系统共享一个认证系统
2、所有子系统能够识别和提取token信息
其实就是一个登录,一个认证。
假设用到的组件信息如表:
名称 | 地址 | 备注 |
---|---|---|
sso认证中心 | http://www.sso.com/login # sso登录页面 http://www.sso.com/get # sso提供的验证token的接口 | – |
a系统 | http://a.test.com # a_url | – |
b系统 | http://b.test.com # b_url | – |
过程
首次访问a系统,这时候肯定没有session,请求sso_url并带上a_url便于回调
请求 http://www.sso.com/login?callback_url=http://a.test.com
sso认证系统进行登录,成功后,回调a系统的地址并带上token
请求 http://a.test.com?token=1234
a系统去认证中心认证,获取到返回信息,a系统登录成功
http://www.sso.com/get?token=1234
然后访问b系统,也去认证中心认证,认证通过,b系统登录成功
对于不同域名之间的单点登录
多个域名之间的单点登录有个问题,就是如何确定是某个用户。 因为浏览器跳转到的时候不会自动带cookie。
方案:
需要所有子系统共享一个cookie。