单点登录笔记

来源:互联网 发布:twitter第三方登录js 编辑:程序博客网 时间:2024/06/09 22:38
单点登录:
    用户访问子系统资源,子系统判断用户是否建立了局部会话
    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认证中心引导用户前往登录页面