为什么需要单点登录

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

单点登录在大型网站里使用得非常频繁,例如,阿里旗下有淘宝、天猫等网站,还有背后的成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。

所以,单点登录要解决的就是,用户只需要登录一次就可以访问所有相互信任的应用系统。

单点登录的来源

1.早期web单系统应用

早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的,所有的功能,所有的业务,后台管理,门户界面,都是由这一个war来支持的,这样的单应用,也称之为巨石应用,因为十分不好扩展和拆分。

在巨石应用下,用户的登录以及权限就显得十分简单,当浏览器向服务器发送登录请求时,验证通过之后,会将用户信息存入seesion中,然后服务器会生成一个sessionId放入cookie中,随后返回给浏览器。

大致可以用下图来表示:

验证登录的这个会话就是session,维护了用户状态,也就是所谓的HTTP有状态协议,我们经常可以在浏览器中看到JSESSIONID,这个就是用来维持这个关系的key。

2.分布式集群部署

由于网站的访问量越来也大,单机部署已经是巨大瓶颈,所以才有了后来的分布式集群部署。

例如:如果引入集群的概念,单应用可能重新部署在3台tomcat以上服务器,使用nginx来实现反向代理。

但是增加新的服务器之后,不同的服务器之间的sessionId是不一样的,可能在A服务器上已经登录成功了,能从服务器的session中获取用户信息,但是在B服务器上却查不到session信息,只好退出来继续登录,结果A服务器中的session因为超时失效,登录之后又被强制退出来要求重新登录。

所以不得不考虑多服务器之间的session数据一致的问题,这就是单点登录的最早来源。

单点登录的实现方式

单点登录的本质就是在多个应用系统中共享登录状态,如果用户的登录状态是记录在 Session 中的,要实现共享登录状态,就要先共享 Session。

所以实现单点登录的关键在于,如何让 Session ID(或 Token)在多个域中共享。

1.同域下的单点登录

一个企业一般情况下只有一个域名,通过二级域名区分不同的系统。

比如我有个域名:mikechen.cc,同时有两个业务系统分别为:

blog.mikechen.cc
video.mikechen.cc

我们要做单点登录(SSO),需要一个登录系统,叫做:sso.mikechen.cc。

我们只要在sso.mikechen.cc登录,blog.mikechen.cc和video.mikechen.cc也登录了。

实现方式:其实这里就是利用了 二级域名 写 一级域名的 Cookie 。sso.mikechen.cc登录以后,可以将Cookie的域设置为顶域,即.mikechen.cc,这样所有子域blog.mikechen.cc和video.mikechen.cc的系统都可以访问到顶域的Cookie。

此种实现方式比较简单,但不支持跨主域名,局限性限于一级域名是一样的。

2.不同域下的单点登录

同域下的单点登录是巧用了Cookie顶域的特性,如果是不同域呢,比如:下面三个是不同域的

mikechen1.cc
mikechen2.cc
mikechen3.cc

实现方式:我们可以部署一个SSO认证中心,认证中心就是一个专门负责处理登录请求。

所有的请求(登录、退出、获取用户信息、当前用户状态)都请求sso 系统,sso 系统维护用户信息。

此种实现方式相对复杂,支持跨域,扩展性好,是单点登录的标准做法。

基于SSO认证中心的开源项目代表:CAS,其中 CAS是Central Authentication Service,即中央认证服务,下图是CAS的基本过程:

以上就是基于单点登录的介绍!

-END-

关于作者:mikechen,十余年BAT架构经验,资深技术专家,曾任职阿里、淘宝、百度。

欢迎关注个人公众号:mikechen的互联网架构,十余年BAT架构经验倾囊相授!

在公众号菜单栏对话框回复【架构】关键词,即可查看我原创的300期+BAT架构技术系列文章与1000+大厂面试题答案合集。

单点登录SSO的实现原理与方案详解相关推荐

  1. 单点登录SSO的实现原理

    单点登录SSO的实现原理 单系统登录机制 浏览器第一个请求服务器,服务器会创建一个会话,并将会话的ID作为响应的一部分发送给浏览器,浏览器存储会话ID,并在后续的请求中带上会话ID,服务器取得请求中的 ...

  2. SSO单点登录三种情况的实现方式详解

    SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...

  3. shiro单点登录原理_SSO单点登录三种情况的实现方式详解

    单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统--百度经验.百度知道.百度文库等 ...

  4. usmssosetup 单点登录被禁用_SSO单点登录三种情况的实现方式详解

    单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统--百度经验.百度知道.百度文库等 ...

  5. 基于JSON Web Tokens的单点登录(SSO)或通行证(Passport)系统方案

    首先简要介绍一下什么JWT(JSON Web Token). JWT是一种开放的,工业标准的规范,用于在两个应用之间安全地传输信息. JWT由3个部分组成,分别是头部.载荷.签名. 头部部分 {   ...

  6. 浅谈单点登录SSO实现方案 | StartDT Tech Lab 06

    写在前面 这是奇点云全新技术专栏「StartDT Tech Lab」的第6期. 在这里,我们聚焦数据技术,分享方法论与实战.一线的项目经历,丰富的实践经验,真实的总结体会-滑到文末,可以看到我们的往期 ...

  7. 单点登录SSO的原理和实现

    背景 SSO,英文全称Single Sign On,单点登录,一般应用于多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源.如登录访问 blog.baidu.com 后,对于 ...

  8. 统一用户认证和单点登录和授权的原理与流程

    统一用户认证和单点登录和授权的原理与流程 1 前言 2 介绍 2.1 统一用户认证 2.2 单点登录 2.3 授权 3 原理 3.1 统一用户认证原理 3.2 单点登录原理 3.3 OAuth授权原理 ...

  9. 单点登录SSO:图示和讲解

    目录 概述 示例运行效果动画 跨域Web SSO时序图 代码截图 几个基本概念 涉及的站点和页面 重点理解:单点登录的核心步骤 敢说最准确的单点登录图示,因为: 我严格对照所画时序图的每个步骤,开发了 ...

  10. 企业门户应用整合中单点登录(SSO)的技术实现与应用

    企业门户应用整合中单点登录(SSO)的技术实现与应用 相关专题: 电子应用 时间:2009-07-27 09:56来源: icbuy亿芯网 1 引 言 企业在信息化建设过程中,由于经常采用逐步信息化的 ...

最新文章

  1. ubuntu 命令整合1
  2. openstack之horizon源码分析之二
  3. python——数据类型
  4. Ubuntu14.04-LAMP环境搭建
  5. 太突然!多所高校永久关闭
  6. MYSQL临时表创建索引
  7. 中国人民大学金琴老师组,AI·M^3实验室招募视觉与语言方向硕博
  8. ELF格式解析库之基本数据类型
  9. 单体预聚合的目的是什么_第七章 配位聚合
  10. (11)DJBX33A APR哈希默认算法
  11. RocketMQ入门到入土(二)事务消息顺序消息
  12. 更改数据库表中有数据的字段类型NUMERIC(18,2)为NUMERIC(18,6)
  13. Linux Shell 编程笔记
  14. spring事务 jdbc_Spring事务管理示例JDBC
  15. ev3的c语言编程软件,乐高EV3编程软件教育版下载
  16. 广东省本科学校列表(附官网地址)
  17. Python中制表符\t的使用
  18. 代码格式化工具:pretter
  19. 如何理解奇偶校验只能发现数据代码中奇数位出错的情况
  20. 有效解决package ‘xxxx‘ is not in GOROOT

热门文章

  1. TCP/IP 域名系统DNS
  2. B - Sort the Array
  3. 安装pd15提示“无法启动 Parallels Desktop,因为 Mac 的操作系统中缺少某些必需的组件”是怎么回事儿?
  4. iOS开发之原生二维码扫描rectOfInterest扫描区域
  5. pd虚拟机镜像:懒人一键安装win10、11
  6. Mac多功能文件搜索软件:HoudahSpot
  7. 如何永久的关闭macOS 更新提示?
  8. mac自带录屏截图功能怎么使用?好用吗?
  9. Mac 启动时屏幕上的特殊图像标识都是什么意思
  10. Fiddler模拟请求报文