难点疑点:
- 系统1 登陆 在认证中心获得 token;系统2 没有登陆,如何获取已经登陆的token,认证中心怎么知道它是谁?
解答:
单点登录,系统B如何辨别用户已登录系统A
首先系统A去访问受限资源,跳转到sso认证中心https://login.sso.com/login?redirectURL=https://www.a.com/center,用户登录成功之后,sso认证中心生成一个令牌(如token)返回给系统A。
其实这时候,浏览器中存有两个Cookie,一个是系统A的,一个sso认证中心的,并且对应的session都是登录状态。
然后系统B第一次去访问受限资源,依然要先跳转sso认证中心,https://login.sso.com/login?redirectURL=https://www.b.com/center,此时,sso认证中心发现携带的Cookie(sso认证中心域名的Cookie)对应的session是登录状态的,那就直接省去登录的过程,直接把用户的令牌返回给系统B就行了。
此时浏览器中有三个Cookie,对应的session都是登录状态的
- 一个系统退出登陆后,认证中心如何通知其他系统退出系统(这块是不是 直接把token置位过期或者失效就可以?因为系统每次都会去认证中心去验证token是否有效)
有关单点登陆的概念介绍:
https://www.cnblogs.com/ywlaker/p/6113927.html#!comments