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

    真正的单点登录,可以通过 CAS 来设计,集中认证服务,也就是认证是由一个独立的域名提供的网页认证服务(也是一个系统,认证中心)。

    多个域名共享Cookie,在写到客户端的时候设置Cookie的domain。也就是说需要一个地方设置哪些域名是可以共享Cookie,也就是单点登录的所有系统的域名。

    这个过程和微信公众号的网页认证一样,流程描述如下:

    现在有两个应用系统(www.java3y.comwww.java4y.com)和一个认证系统(www.sso.com)

     

     

    首先,用户想要访问系统Awww.java3y.com受限的资源(比如说购物车功能,购物车功能需要登录后才能访问),系统Awww.java3y.com发现用户并没有登录,于是重定向到sso认证中心,并将自己的地址作为参数。请求的地址如下:

    • www.sso.com?service=www.java3y.com

    sso认证中心发现用户未登录,将用户引导至登录页面,用户进行输入用户名和密码进行登录,用户与认证中心建立全局会话(生成一份Token,写到Cookie中,保存在浏览器上)

     

     

    随后,认证中心重定向回系统A,并把Token携带过去给系统A,重定向的地址如下:

    • www.java3y.com?token=xxxxxxx

    接着,系统A去sso认证中心验证这个Token是否正确,如果正确,则系统A和用户建立局部会话(创建Session)。到此,系统A和用户已经是登录状态了。

     

     

    此时,用户想要访问系统Bwww.java4y.com受限的资源(比如说订单功能,订单功能需要登录后才能访问),系统Bwww.java4y.com发现用户并没有登录,于是重定向到sso认证中心,并将自己的地址作为参数。请求的地址如下:

    • www.sso.com?service=www.java4y.com

    注意,因为之前用户与认证中心www.sso.com已经建立了全局会话(当时已经把Cookie保存到浏览器上了),所以这次系统B重定向到认证中心www.sso.com是可以带上Cookie的。

    认证中心根据带过来的Cookie发现已经与用户建立了全局会话了,认证中心重定向回系统B,并把Token携带过去给系统B,重定向的地址如下:

    • www.java4y.com?token=xxxxxxx

    接着,系统B去sso认证中心验证这个Token是否正确,如果正确,则系统B和用户建立局部会话(创建Session)。到此,系统B和用户已经是登录状态了。

     

     

    CAS官网上的标准流程如下:

  • 相关阅读:
    基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本
    [Linux-CentOS7]yum清华源CentOS7
    [Python]random生成随机6位验证码
    [Python]公司接口返回值规范
    [MacOS]Chrome 强制刷新
    Mybatis的XML中数字不为空的判断
    康师傅JVM:执行引擎(十二)
    Qt 随机颜色的生成
    Qt QVector常见使用方法
    Qt 判断文件是否存在
  • 原文地址:https://www.cnblogs.com/heroljy/p/14285046.html
Copyright © 2011-2022 走看看