开发问题9:使用xxl-sso做单点登陆,原理和步骤

一、xxl-sso源码位置

       https://github.com/xuexionghui/xxl-sso-master.git

二、源码解释:

   开发问题9:使用xxl-sso做单点登陆,原理和步骤_第1张图片

三、启动认证授权中心(8080)

     1、需要配置redis连接,且认证授权中心和客户端必须连接同一个redis地址

      开发问题9:使用xxl-sso做单点登陆,原理和步骤_第2张图片

  (注意:设置redis的一个方式:

    找到

开发问题9:使用xxl-sso做单点登陆,原理和步骤_第3张图片,找到getInstance方法,

开发问题9:使用xxl-sso做单点登陆,原理和步骤_第4张图片

四、启动认证客户端(分为8084、8085)

      1、做hosts文件拦截

     

     2、客户端1:8084端口:http://xxlssoclient1.com:8084/xxl-sso-web-sample-springboot/

     3、客户端2:8085端口:http://xxlssoclient2.com:8085/xxl-sso-web-sample-springboot/

五、效果

      在同一个浏览器内,对这两个客户端其中一个登陆了的话那么另外一个就会自动登录

六、原理图

七、原理流程

      从client方面分析:

      1、客户端请求先从浏览器中拿cookie中的cookieId

      2、在没有拿到cookieId,即用户没有登录过的话,那么重定向到认证授权中心

            链接:http://xxlssoserver.com:8080/xxl-sso-server/login?redirect_url=http://xxlssoclient1.com:8084/xxl-sso-web-sample-springboot/

             问题: 为什么要有redirect_url地址?    在认证授权中心登录成功以后,回调到原来的请求地址(回调地址)

      3、认证授权中心登录成功以后,在对应的域名下保存对应的cookieId信息

      4、认证授权中心传递给客户端(子系统),带有xxl_sso_sessionid

           连接:http://xxlssoclient1.com:8084/xxl-sso-web-sample-springboot/?xxl_sso_sessionid=1000_4529db8531d54e23856e44002ace6cb

      5、回调到子系统的时候,进XxlSsoWebFilter拦截 获取xxl_sso_sessionid 信息

      6、子系统使用xxl_sso_sessionid从redis查询认证授权系统登陆的用户信息,将用户信息在子系统域名下存放对应的用户Cookie信息,这样的 可以保证 认证授权系统和子系统双方Cookie信息同步

      附带:其他其他子系统如何实现免密登陆的呢 (前提:已经有第一个客户端实现了登录了)?

                 第二个客户端(子系统)系统登陆的话,重定向到认证授权系统,从认证授权系统域名中获得Cookie信息,

                直接把认证授权系统的cookie信息带参数返回给第二个客户端(子系统),第二个客户端(子系统)使用xxl_sso_sessionid从redis查询认证授权系统登陆的用户信息,将用户信息在子系统域名下存放对应的用户Cookie信息

    

你可能感兴趣的:(开发问题9:使用xxl-sso做单点登陆,原理和步骤)