本文介绍了SSO单点登录的概念和实践方式,以及单点登录的应用意义。

相信很多朋友都看了罗振宇“时间的朋友”跨年演讲,其中提出了一个新的概念“新基础设施”。其中提到了19年天猫双十一美妆品牌销量第一名——“完美日记”,借助“新基础设施”在短短两年时间,就达到甚至超越了传统企业很多年深耕了多年的市场水平。而建设一个企业级应用时,亦可借助一些通用的“基础设施”提供的能力,快速、高效地搭建应用,SSO单点登录就是其中一项非常常见的通用能力。

引言

在原来软件开发模式下,任何一个模块都是我们程序猿大哥一行一行代码写出来的。现如今很多现成的功能,通过服务的形式提供给我们,拿来即用。

在企业级应用中也有很多集成的功能产品,SSO单点登录、工作流引擎、表单引擎等等不胜枚举。其实就和我们在用Axure画原型的时候,设计一套符合产品前端组件的元件库(比如我们常用的就是Element-ui),不用每次都用基础的线框制作原型图,需要放一个穿梭框直接拖过来用就好。

sso单点登录原理(公司单点登录通俗解释)(1)

简介

单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

  1. 企业开始进行信息化建设,搭建了一套业务系统A。通过用户名密码就可以登录。
  2. 随着业务的发展,又搭建了业务系统B、业务系统C、业务系统D……,每套系统都需要登录、输入各自的用户名密码,记忆成本高。
  3. 通过打通数据层,共用底层用户数据,统一不同业务系统的鉴权机制,实现了登录所有系统用一套用户名密码即可。但是每套系统都得登录一遍,操作起来还是麻烦,可以不可以只登录一次就行了?
  4. SSO单点登录应运而生,所有新技术的变革都是解决某项用户需求痛点。

实践

先通过一个栗子描述一下单点登录实现的方式:

员工小明拿着公司的一卡通,可以进公司大门,可以当饭卡刷,可以公司内便利店买东西。

sso单点登录原理(公司单点登录通俗解释)(2)
  1. 小明进公司大门,看门大爷问小明要公司的一卡通,小明没有一卡通,查了查电话本,找到了人力部门的电话;
  2. 看门大爷把人力部门电话给了小明;
  3. 小明给人力部门电话打了过去;
  4. 人力部门接了电话;
  5. 小明报上了自己的大名,手机号,哪个部门等等信息;
  6. 人力小姐姐去系统里面查了查,还真有小明这个人,于是就给了小明一个一卡通;
  7. 然后小明又拿着这个一卡通给老大爷一看;
  8. 老大爷还得再次确认一下这个一卡通是不是真的,老大爷又去跟人力确认;
  9. 人力告诉老大爷,这个一卡通确实有效;
  10. 老大爷把小明放进去了;

小明直到今天下班都拿着一卡通,去吃饭刷一卡通,去便利店拿着一卡通,通过一卡通确认小明的身份。直到下了班,把一卡通还给了公司。

刚才这个例子简单描述了目前实现单点登录比较流程的一个框架——CAS。

下面我们把实现逻辑还原一下。

sso单点登录原理(公司单点登录通俗解释)(3)
  1. 【客户端】发起请求,访问www.123.com,经过一个过滤器(CAS提供),判断用户是否登录过。如果没登录重定向到【认证中心】;
  2. 【认证中心】给【客户端】返回了重定向地址:www.cas.123.com;
  3. 【客户端】重定向到www.cas.123.com;
  4. 【认证中心】返回了登录页面;
  5. 用户输入用户名、密码;
  6. 【认证中心】验证用户名、密码真实性。真实有效后,提供了一个ticket;
  7. 【客户端】又拿着ticket去www.123.com请求;
  8. 【服务端】拿着刚才用户提供过来的ticket去认证中心验证真实性;
  9. 【认证中心】确认ticket真实有效;
  10. 【服务端】返回相关资源,【客户端】展示相关资源。

当用户在访问其他业务系统时候,其他业务系统都会去【认证中心】验证用户携带的这个ticket,认证通过后即可直接访问其他业务系统,无需再次登录。

从实现方式上还其他协议可以实现单点登录目的:

也有一些已商业化的解决方案:Oracle OAM、阿里云IDaaS等。

具体采用何种解决方案,看要看业务的具体需求。而且不同解决方案各有优略,在此不再赘述。

意义

我们了解到单点登录解决了用户端交互体验的诉求,其实它的好处远不止于此。

数据应用方面意义

不论是企业内部的业务系统,还是面向各行业C端用户的产品也都在进行单点登录建设。

产品研发方面意义