起点学院课程

企业级应用建设——SSO单点登录

0 评论 4071 浏览 36 收藏 9 分钟
15天0基础极速入门数据分析,掌握一套数据分析流程和方法,学完就能写一份数据报告!了解一下>>

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

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

引言

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

  • 云计算基础服务——服务器、网络、数据库等等;
  • 中间件——消息队列MQ、Redis、日志服务、应用配置管理ACM等等;
  • 前、后端开发框架——VUE、Spring Cloud;
  • 短信服务——短信运营商、各大云服务商的短信服务;
  • 数据埋点——埋点服务提供商;
  • 消息推送——友盟、极光推送;

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

简介

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

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

实践

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

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

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

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

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

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

  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,认证通过后即可直接访问其他业务系统,无需再次登录。

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

  • SAML安全断言标记语言(Security Assertion Markup Language);
  • OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
  • OIDC是OpenID Connect的简称,它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议;

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

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

意义

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

数据应用方面意义

  • 针对用户来说,减少了繁琐的操作,优化了用户体验;
  • 针对企业来说,通过单点登录统一用户数据,推动私域流量的搭建,同时是构建企业数据中台的基石。

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

产品研发方面意义

  • 统一性——统一底层数据结构;
  • 拓展性——利于外部系统对接;
  • 安全性——自己保障高可用同时,通过统一鉴权机制,进一步保障数据安全;
  • 高效性——提高产品开发效率,不用重复造轮子;大型业务系统背后,用户一次操作可能需要很多业务系统协作,通过统一的鉴权机制提升整体性能效率;

 

作者:天气不错,公众号:天气的朋友(friends_of_tianqi)

本文由@天气不错 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash, 基于CC0协议。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
起点学院课程
评论
评论请登录
  1. 目前还没评论,等你发挥!