单点登录:
用户访问子系统资源,子系统判断用户是否建立了局部会话
1)如果已经建立了局部会话,那么就表示已经登录过了,允许访问资源
2)如果没有建立局部会话,那么需要知道用户是否建立了全局会话,这时向sso认证中心发起请求以证明是否该用户建立了全局会话,并将自己的地址作为参数。
3)sso认证中心发现用户已经建立了全局会话,那么sso认证中心带着令牌跳转到穿过来的请求地址
4)sso认证中心发现用户没有建立全局会话,那么就引导用户前去登录界面,收集用户的用户名和密码,处理登录请求,如果登录成功,则创建用户与sso认证中心的全局会话,同时创建授权用的 令牌 带着令牌跳往传过来的地址。
5)子系统会拿到令牌,然后去sso认证中心验证令牌是否有效
6) sso认证中心认证令牌,有效则返回有效,并注册该子系统。
7) sso认证中心认证令牌无效,前往4)
8)子系统使用令牌与用户创建局部会话,然后允许用户访问资源。
备注:
用户与子系统建立局部会话
用户与sso认证中心建立全局会话
一般子系统不提供登录的入口,只是接受被授权的令牌,然后根据这个令牌与客户建立局部会话,并且通过这个令牌与sso认证中心进行授权通信。
如果需要访问子系统资源,必须需要建立局部会话,要建立局部会话,那么必须要建立全局会话,要建立全局会话,就必须通过sso认证中心的认证。
思考:
局部会话的建立是否有必要?因为我们能否进入子系统取决于是否建立的全局会话
不能。因为认证的关系链是 用户 <--> 局部会话 <--> 全局会话 ,如果没有局部会话,那么真个系统无法跟踪用户,也没法联系sso认证中心,这个是最根本的问题
还有从性能上来说,当只要用户建立全局会话后,那么用户的资源访问控制址需要局部会话管理就好,无需再次请求sso认证中心认证,这样可以减轻sso认证中心的压力。
单点注销:
1)用户在子系统发起注销请求,子系统通过局部会话拿到令牌,然后向sso认证中心发起注销请求
2)sso认证中心接受到请求,首先认证令牌是否有效,如果有效,则销毁全局会话,然后取出与这个令牌相关的子系统地址
3)sso认证中心根据上一步拿到的令牌相关的所有子系统地址,发起注销请求。
4)各与令牌相关的子系统接受到sso认证中心的注销请求,取消局部会话。
5)sso认证中心引导用户前往登录页面
用户访问子系统资源,子系统判断用户是否建立了局部会话
1)如果已经建立了局部会话,那么就表示已经登录过了,允许访问资源
2)如果没有建立局部会话,那么需要知道用户是否建立了全局会话,这时向sso认证中心发起请求以证明是否该用户建立了全局会话,并将自己的地址作为参数。
3)sso认证中心发现用户已经建立了全局会话,那么sso认证中心带着令牌跳转到穿过来的请求地址
4)sso认证中心发现用户没有建立全局会话,那么就引导用户前去登录界面,收集用户的用户名和密码,处理登录请求,如果登录成功,则创建用户与sso认证中心的全局会话,同时创建授权用的 令牌 带着令牌跳往传过来的地址。
5)子系统会拿到令牌,然后去sso认证中心验证令牌是否有效
6) sso认证中心认证令牌,有效则返回有效,并注册该子系统。
7) sso认证中心认证令牌无效,前往4)
8)子系统使用令牌与用户创建局部会话,然后允许用户访问资源。
备注:
用户与子系统建立局部会话
用户与sso认证中心建立全局会话
一般子系统不提供登录的入口,只是接受被授权的令牌,然后根据这个令牌与客户建立局部会话,并且通过这个令牌与sso认证中心进行授权通信。
如果需要访问子系统资源,必须需要建立局部会话,要建立局部会话,那么必须要建立全局会话,要建立全局会话,就必须通过sso认证中心的认证。
思考:
局部会话的建立是否有必要?因为我们能否进入子系统取决于是否建立的全局会话
不能。因为认证的关系链是 用户 <--> 局部会话 <--> 全局会话 ,如果没有局部会话,那么真个系统无法跟踪用户,也没法联系sso认证中心,这个是最根本的问题
还有从性能上来说,当只要用户建立全局会话后,那么用户的资源访问控制址需要局部会话管理就好,无需再次请求sso认证中心认证,这样可以减轻sso认证中心的压力。
单点注销:
1)用户在子系统发起注销请求,子系统通过局部会话拿到令牌,然后向sso认证中心发起注销请求
2)sso认证中心接受到请求,首先认证令牌是否有效,如果有效,则销毁全局会话,然后取出与这个令牌相关的子系统地址
3)sso认证中心根据上一步拿到的令牌相关的所有子系统地址,发起注销请求。
4)各与令牌相关的子系统接受到sso认证中心的注销请求,取消局部会话。
5)sso认证中心引导用户前往登录页面