zoukankan      html  css  js  c++  java
  • SSO单点登录

    单点登陆

    单系统登陆如何实现

    示例:客户端向服务端发送请求,首次请求受保护资源时,服务端生成cookie并返回给客户端,客户端保存cookie。下次请求服务端时自动带上服务端相关域名的所有cookie,服务端收到cookie并检测是否存在,若存在则返回受保护资源给客户端。


    总结:单系统登陆是依据cookie域(通常是服务端的域名)进行的,记录用户状态。

    集群系统下单系统登录诟病

    服务器集群环境下,不同系统的域名不一样,用户每次访问该系统时,都需要进行一次登陆操作,操作繁琐,用户体验感也差。
    这个时候,单点登陆就可以解决我们的问题。

    单点登陆

    单点登陆(Single Sign On):是指在多系统应用集群环境下,只需要在系统登陆一次,就可以访问其他子系统且无需再次登陆。单点登陆还包括(注销模块)


    原理:从系统集群中抽出用户中心模块,作为系统授权中心管理。
    假设有集群中有系统1,系统2,用户中心三个系统。
    1.当客户端首次访问系统1时,系统1去访问用户中心该用户是否已经登陆,用户中心响应用户未登陆,返回登陆页面(携带系统1地址)给客户端。
    2.客户端直接向用户中心系统发起登陆请求,用户中心接受请求,校验通过后生成令牌(关键点),并创建全局会话,跳转到系统1(携带令牌)。
    3.系统1接受到用户中心携带的令牌,再向用户中心发起令牌校验请求
    4.用户中心校验令牌通过,向系统1注册用户信息,返回成功给系统1
    5.系统1创建局部会话,并将受保护资源返回给客户端。
    6-1.客户端下一次访问系统1,系统1根据局部会话是否存在,若存在,直接返回受保护资源。否则重复第1步操作。
    6-2.客户端下一次访问系统2,系统2检测局部会话不存在,系统2去请求用户中心。
    7.用户中心检测用户已登录,返回令牌给系统2。
    8.系统2接收令牌后,向用户中心发起令牌校验。
    9.用户中心令牌校验通过,给系统2返回成功信息
    10.系统2创建局部会话,并将受保护资源返回给客户端。
    11.客户端下一次访问系统1/系统2, 参照6-1/6-2即可。

    单点注销


    1.客户端向系统1发起注销请求
    2.系统1向用户中心发起注销请求
    3.用户中心校验用户登陆令牌通过,注销令牌,向各子系统发起注销令牌请求。
    4.所有子系统注销该用户的登陆令牌


    单点登陆指导:https://www.cnblogs.com/ywlaker/p/6113927.html

  • 相关阅读:
    用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
    如何快速地编写和运行一个属于自己的 MapReduce 例子程序
    Hive如何加载和导入HBase的数据
    kettle中的karaf设置
    sqoop学习
    windows 本地配置hadoop客户端
    python 随机分类
    python 皮尔森相关系数
    kettle配置命名参数
    idea配置scala和spark
  • 原文地址:https://www.cnblogs.com/winniejohn/p/9865892.html
Copyright © 2011-2022 走看看