单点登录说明(单点登录流程)

  什么是单点登录?单点登录全称SingleSignOn(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分1、登录  相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户…

大家好,又见面了,我是你们的朋友全栈君。

  什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分

1、登录

  相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。这个过程,也就是单点登录的原理,用下图说明

单点登录说明(单点登录流程)
 

下面对上图简要描述

  1. 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
  2. sso认证中心发现用户未登录,将用户引导至登录页面
  3. 用户输入用户名密码提交登录申请
  4. sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌
  5. sso认证中心带着令牌跳转会最初的请求地址(系统1)
  6. 系统1拿到令牌,去sso认证中心校验令牌是否有效
  7. sso认证中心校验令牌,返回有效,注册系统1
  8. 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源
  9. 用户访问系统2的受保护资源
  10. 系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
  11. sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌
  12. 系统2拿到令牌,去sso认证中心校验令牌是否有效
  13. sso认证中心校验令牌,返回有效,注册系统2
  14. 系统2使用该令牌创建与用户的局部会话,返回受保护资源

  用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系

  1. 局部会话存在,全局会话一定存在
  2. 全局会话存在,局部会话不一定存在
  3. 全局会话销毁,局部会话必须销毁

  你可以通过博客园、百度、csdn、淘宝等网站的登录过程加深对单点登录的理解,注意观察登录过程中的跳转url与参数

 

2、注销

  单点登录自然也要单点注销,在一个子系统中注销,所有子系统的会话都将被销毁,用下面的图来说明

单点登录说明(单点登录流程)

 sso认证中心一直监听全局会话的状态,一旦全局会话销毁,监听器将通知所有注册系统执行注销操作

  下面对上图简要说明

  1. 用户向系统1发起注销请求
  2. 系统1根据用户与系统1建立的会话id拿到令牌,向sso认证中心发起注销请求
  3. sso认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址
  4. sso认证中心向所有注册系统发起注销请求
  5. 各注册系统接收sso认证中心的注销请求,销毁局部会话
  6. sso认证中心引导用户至登录页面

3、部署图

  单点登录涉及sso认证中心与众子系统,子系统与sso认证中心需要通信以交换令牌、校验令牌及发起注销请求,因而子系统必须集成sso的客户端,sso认证中心则是sso服务端,整个单点登录过程实质是sso客户端与服务端通信的过程,用下图描述

单点登录说明(单点登录流程)

so认证中心与sso客户端通信方式有多种,这里以简单好用的httpClient为例,web service、rpc、restful api都可以

4、实现

  只是简要介绍下基于java的实现过程,不提供完整源码,明白了原理,我相信你们可以自己实现。sso采用客户端/服务端架构,我们先看sso-client与sso-server要实现的功能(下面:sso认证中心=sso-server)

  sso-client

  1. 拦截子系统未登录用户请求,跳转至sso认证中心
  2. 接收并存储sso认证中心发送的令牌
  3. 与sso-server通信,校验令牌的有效性
  4. 建立局部会话
  5. 拦截用户注销请求,向sso认证中心发送注销请求
  6. 接收sso认证中心发出的注销请求,销毁局部会话

  sso-server

  1. 验证用户的登录信息
  2. 创建全局会话
  3. 创建授权令牌
  4. 与sso-client通信发送令牌
  5. 校验sso-client令牌有效性
  6. 系统注册
  7. 接收sso-client注销请求,注销所有会话

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129745.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月14日 下午7:40
下一篇 2022年4月14日 下午7:40


相关推荐

  • mediumtext java_加快此查询(加入mediumtext字段)「建议收藏」

    mediumtext java_加快此查询(加入mediumtext字段)「建议收藏」我有这个问题SELECTt.name,t.userid,t.date,t.cat_id,t.forum_id,t.reply,t.hidden,t.moderated,t.sticky,t.statut,t.poll,t.helpful,t.del,t_data.message,user.nameASauthor_name,user.levelASauthor_level,user….

    2022年6月11日
    59
  • dubbo简介

    dubbo简介dubbo简介

    2022年4月25日
    49
  • FL studio 20简易入门教程 — 第六篇 — 调音台和自动化包络线

    FL studio 20简易入门教程 — 第六篇 — 调音台和自动化包络线本文将主要聚焦于调音台和自动化包络线 前者是想要做出各种各样奇幻好听的音乐效果的核心 后者则是想要实现不停变化的效果所必须的技能 自动化包络线是编曲中的重要一环 需要好好掌握

    2026年3月26日
    2
  • Pycharm又是啥东西?

    Pycharm又是啥东西?pycharm 简介 1 当你熟练掌握了 python 的 ABC 掌握了内功心法 却一直找不到一件趁手的兵器 你说烦人不烦人 这个时候 pycharm 是你的不二选择 2 pycharm 是啥 PyCharm 是 PythonIDE 集成开发环境 带有一整套可以帮助用户在使用 Python 语言开发时 提高其开发效率的工具 说白了 pycharm 就是倚天剑 屠龙刀 给各位张无忌大佬门提供的写代码平台 有了这个平台 你可以轻松输入你的 ABC 还能帮你自动补全一些代码符号 还能理解你补充的含义 你就说良心不良心

    2026年3月17日
    1
  • keil生成bin文件失败_编译后生成的文件扩展名为

    keil生成bin文件失败_编译后生成的文件扩展名为在KEIL魔术棒中通过以下方式生成bin文件时,居然出错,当时震惊了,第一次出现这种情况:使用的命令:fromelf–bin–output.\bin\APP.bin.\STM32_APP\STM32_APP.axf生成的bin文件,居然变成了文件夹!如下图:一开始以为是ROM地址设置的不对,找之前的工程来对比“魔术棒”中的配置,发现没有问题!然后怀疑是工程文件名称太长,或者下划线太多。。。重新新建工程,重命名文件夹等各种操作,发现问题依旧!然后嫉妒怀疑是KEIL的BUG.

    2022年10月20日
    3
  • UDP协议解析

    UDP协议解析????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????????‍????UDP协议简介UDP是UserDatagramProtocol的简称,中文名是用户数据报协议,是OSI(OpenSystemInt

    2022年6月7日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号