zoukankan      html  css  js  c++  java
  • 多个系统域名使用同一认证中心做单点登录的做法

    举个简单又不失一般性的场景,两个应用 A 和 B,域名分别是www.a.com、www.b.com,统一认证中心的域名是www.sso.com

    1.用户通过浏览器先访问 A系统www.a.com/pageA , 这个pageA是个需要登录才能访问的页面,

    2.A系统发现用户没有登录, 就重定向到认证中心,www.sso.com/login?redirect=www.a.com/pageA

    3.浏览器会用这个www.sso.com/login?redirect=www.a.com/pageA 去访问认证中心

    4.认证中心一看, 没登录过, 认证中心就让用户去登录, 登录成功以后, 认证中心要做几件重要的事情 :

       4.1. 建立一个session。

       4.2. 创建一个ticket (可以认为是个随机字符串)

       4.3.  然后通过浏览器再重定向到A系统, url 中带着ticket : www.a.com/pageA?ticket=T123   与此同时cookie也会发给浏览器,比如:Set cookie : ssoid=1234, sso.com

       4.4 A系统ticket拿到以后需要再次向认证中心做验证,认证中心说没错,是我发的,那你就可以认为用户在认证中心登录过了

     5.建立session, 返回pageA这个资源,同时给浏览器发一个cookie : Set cookie : sessionid=xxxx, a.com

         注意,这时候浏览器实际上有两个cookie,一个是你发的,另外一个是认证中心发的。"

    6.访问www.b.com/pageB和访问www.a.com/pageA 唯一的不同就是不需要用户登录了,因为浏览器已经有了认证中心的cookie, 直接发给www.sso.com就可以了

    将以上步骤贴个图,更加清晰:

    转自:https://www.cnblogs.com/qiyu/p/7246369.html

  • 相关阅读:
    Idea快捷键
    Java学习之路--书籍推荐
    泵式等待基元
    uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比
    前端框架2019 云开发
    select2 javascript控件 如何设置指定的值
    Github 索引
    linux
    WPF 中的 Uri 地址的不同写法
    WPF GridSplitter 使用技巧
  • 原文地址:https://www.cnblogs.com/adhehe/p/11810888.html
Copyright © 2011-2022 走看看