zoukankan      html  css  js  c++  java
  • 单点登录(SSO)和多点登录

    SSO(单点登录)的概念:在一个多系统共存的环境下,用户在一处登录后,就不用再其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。

    SSO(单点登录)的应用场景:单点登录在大型网站使用非常频繁,例如阿里巴巴网站,在网站的背后是成白上千的子系统,用户的一次操作可能涉及到几十个子系统的协作,如果每个子系统都需要用
    户验证,不仅用户会疯掉,各系统也会为这种重复授权搞疯。

    需要解决的两点:解决如何产生和存储信任,系统如何验证这个信任的有效性(1.存储信任 2.验证信任)

    解决方案:
    1.以Cookie作为凭证媒介,通过JSONP实现
    用户登录父应用系统后,跟Session匹配的Cookie会存到客户端中,当用户登录子应用系统时,授权应用访问父应用提供的JSONP接口,并在请求中
    带上父应用系统域名下Cookie,父应用接收到请求,验证用户的登录状态,
    如果登录中则返回加密信息,子应用通过解析返回加密信息验证,验证通过则登录成功子应用系统
    如果不是登录中则返回重新登录页面
    优点:简单方便
    缺点:信任全部压在Cookie加密中,如果加密算法泄露了,攻击者可以在本地建立一个实现了登录接口的假冒父应用,通过绑定host来把子应用发起的请求指向本地假冒的父应用
    并作出回应通过验证,登录特定用户

    2.通过页面重定向的方式
    通过父应用和子应用来回重定向进行通信实现信息安全传递。父应用提供一个GET方式登录接口,用户通过子应用重定向连接方式访问这个接口。如果用户还没有登录则返回登录页面,
    如果用户登录了则生成加密的Token并且重定向到子应用提供验证Token的接口,通过解密校验后,登录当前用户
    优点:较Cookie方式安全些
    缺点:不方便

    3.使用独立登录系统
    把授权的逻辑与用户信息的相关逻辑独立成一个应用(用户中心),用户中心不处理业务逻辑,只是处理用户信息的管理以及授权给第三方应用。第三方应用需要登录的时候把请求转发给用户中心
    进行处理,处理完毕后返回凭证,第三方验证凭证,通过后就登录用户

    多点登录的概念:同一账号可以在不同终端同时登录,同时收发信息。

    多点登录限制(禁止用户多点在线):一个端同一个账号只能登录一个实例,例如一个账号在网站端登录后,后一个人使用这个账号在网站端登录,前一个人会被挤下去并会收到通知“你已在别处登录....”

  • 相关阅读:
    airtest支持Cocos-Creator,SDK接入
    Python的getter和setter方法
    liunx常用命令
    liunx的vim常用命令收集
    django+atx+liunx的一些shell脚本
    django+airtest+atx部署liunx平台
    Android下的鉴权实现方案
    Mate20 pro实现H265 (HEVC)实时硬件编码
    OpenCV C++常用功能介绍
    Ubuntu16.04编译libjpeg-turbo库
  • 原文地址:https://www.cnblogs.com/ButterflyEffect/p/12222660.html
Copyright © 2011-2022 走看看