手把手教做单点登录(SSO)系列之一:概述与示例
本系列将由浅入深的结合示例、源码以及演示视频,手把手的带大家深入最新的单点登录SSO方案选型与架构开发实战。文末附5个满足不同单点登录场景的gif动画演示(如果看不清请在图片上右键用新窗口打开),本系列后继文章会深入它们的实现方式以及适用场景,大家也可以先观看揣摩其实现。
单点登录即Single Sign On(SSO)。它是大型政府OA、企事业单位OA的标配解决方案。它概言之就是在多个Web、桌面或移动应用系统中,用户只需要登录一次,就可以访问所有的应用系统。
从业十多年,为政府、电信、跨国公司顾问和实施的单点登录解决方案无数,深谙其痛点与关键。
大部分企业,尤其是被一些软件产品的销售人员牵着走的企业,它的单点登录方案实施,从产品方案选型起就存在根本性问题。这些方案常常要求大量现有业务系统的改造(基于统一身份认证服务,采用OpenId,OAuth,SAML等技术创建和传递认证凭据),或者只是体验较差的类似浏览器自动填充账号密码的功能(如Oracle的ESSO)。它们要么改动面大、周期长,要么服务端和客户端局限性多,用户体验也达不到最佳。
事实上,单点登录的实施环境与需求千差万别:有纯Web的(常见又分跨域不跨域的),有桌面应用的,有移动平台的,有要结合Windows登录凭据的,有整合了标准方案的,有不能改动现存系统的,等等等等。最适合企业的方案,一定是需要结合企业应用种类、各系统供应商状况、终端要求、后期扩展性需求、实施成本工期来具体确定的。很多单点登录解决方案的实施,由于顾问的经验、视野或产品倾向性原因,往往导致了这些结果:
1. 明明可以不需要改造被集成系统的,偏偏处处受困于诸多被集成系统的改造。
这个是很多开源免费或者商用的单点登录产品,在实施时最普遍遇到的情况。它们往往基于统一身份认证服务,采用OpenId,OAuth,SAML等技术创建和传递认证凭据,要求各个被集成应用按照相应接口开发。对于不同厂商在不同技术平台、不同维护时间、不同业务场景下构造的多个系统,要求统一按照方案接口标准做改造,其难度可想而知。见过不止一家厂商,他们的业务系统在客户那边已经上线运行,客户后来提出单点登录的集成要求,于是为了快速完工,完全不遵循业界安全规范,采用最简单暴力的方式进行集成,结果导致严重的安全漏洞。
其实,百分之九十以上的业务场景,我们都可以通过不止一种方式,在不改造现有系统的情况下,实现它对单点登录的支持。下文会给出多个示例、github源码,以及演示视频。
2. 明明可以在移动端、桌面端实现跨平台单点登录的,偏偏依赖于特定终端,甚至特定浏览器。
有一家跨国公司,选型某知名软件做单点登录解决方案,它的优点是对被集成系统可以零改造,但只支持Windows终端,因为它有一个Windows程序要安装到每个用户机器上。我作为实施顾问参与时,发现其中绝大部分用户常用的系统都是几个Web系统,完全可以通过实施服务端零改造的SSO方案,避免向他们机器推送一个要按终端数购买授权的应用。这类应用不但授权费用高昂(每终端数千元),而且部署维护成本高、很多设备环境和个性化浏览器下会出兼容性问题。
3. 明明可以和统一身份认证(Identity Authentication)、统一身份管理(Identity Management)分开实施的,偏偏被“忽悠”买了数百万的打包解决方案。
SSO和这两者在应用场景和一些实施方案上有交集,使得很多实施顾问会利用这点,让很多企业不明就里的“明明只想剪个头发,结果买了美容保养年卡,而且头发还剪得不好”。
统一身份认证往往和多个Web应用基于服务端做SSO的方案绑定销售。对于有多个Web应用要做服务端SSO的,尤其是包含多个跨一级域名应用的,常常被推荐部署独立的统一身份认证服务产品,然后让各个应用针对它的接口做开发集成。让各个Web或桌面、移动应用,集成、识别并认可其认证凭据,还要和该服务器安全交换用户身份信息,是一个不小的挑战。现有各个系统的服务商是否还会及时的配合开发本身已是一个大问题,即使他们配合,在一个环节出现问题就会是严重的安全漏洞。
统一身份管理主要是针对企业账户安全领域。它的主要作用,简而言之就是在一个地方管理所有系统账号的创建和终止,避免一个员工离职要到多个应用管理部门做账号删除,很容易出现漏删账号,导致企业信息安全问题。针对很多大型组织架构来讲,它确实也非常必要,我个人实施顾问的很多企业确实也非常需要,后面我会撰文详述这一块的经验心得。这方面现成产品有诸如Oracle的OIM,IBM的Tivoli IM,都是光买授权就动辄上百万的产品(具体费用和用户数、服务器等相关),它们的特点是针对很多大型应用诸如SAP、Lotus Notes等等都有现成的连接器来做账号资源的推拉(Provision/Reconciliation)。但对于没有现成连接器的产品,需要定制开发,这块对于实施人员要求很高,而且后期的维护、新应用的集成基本都完全依赖第三方,成本高昂。
4. 明明可以精干团队一个月实施完的,偏偏劳师动众多个部门折腾上三四个月。
SSO实施和业务系统开发不同,它是技术点密集但工作量少的业务。如果你的开发人员还要为“如何跨域传token”、“如何读写AD”之类现学摸索,那实施结果往往存在较大安全漏洞,也会导致工期不可预测。这一块的很多现成产品都有特定的实施要求和局限性(本人曾填坑Oracle的OIM 和 ESSO),加之实施人员对产品熟悉程度不一,导致企业稍有自身特定的情况,就会要花费大量工时研究调整,甚至最终无法按需交付。
先来几组单点登录方案演示吧,本系列后继文章会深入它们的具体实现方式以及适用场景。
演示一:零改造实施CSDN、百度单点登录

演示二: 任意入口登录、注销,均同步在所有站点登录、注销

演示三:集成AD认证

演示四:QQ、VPN客户端及Web站点统一单点登录

演示五:跨平台示例,移动端单点登录

手把手教做单点登录(SSO)系列之一:概述与示例的更多相关文章
- 最准确的单点登录SSO图示和讲解(有代码范例)|手把手教做单点登录(SSO)系列之二
写第一篇博客<手把手教做单点登录(SSO)系列之一:概述与示例>,就获得了园子里朋友们热情的评论和推荐,感谢各位. 我那篇文章同时发了CSDN和博客园.对比一下,更感受到博客园童鞋们的技术 ...
- 单点登录SSO:可一键运行的完整代码
单点登录方案不同于一个普通站点,它的部署比较繁琐:涉及到好几个站点,要改host.安装证书.配置HTTPS. 看到的不少这方面示例都是基于HTTP的,不认同这种简化: 1. 它体现不出混合HTTP/H ...
- 单点登录SSO:图示和讲解
目录 概述 示例运行效果动画 跨域Web SSO时序图 代码截图 几个基本概念 涉及的站点和页面 重点理解:单点登录的核心步骤 敢说最准确的单点登录图示,因为: 我严格对照所画时序图的每个步骤,开发了 ...
- 单点登录SSO:概述与示例
目录 概述 演示一:零改造实施单点登录 演示二: 单点注销 演示三:集成AD认证 演示四:客户端单点登录 演示五:移动端单点登录 单点登录SSO概述 本系列将由浅入深的,带大家掌握最新单点登录SSO方 ...
- [转载]单点登录SSO:概述与示例
原文地址: https://www.cnblogs.com/baibaomen/p/sso.html 目录 概述 演示一:零改造实施单点登录 演示二: 单点注销 演示三:集成AD认证 演示四:客户端单 ...
- 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析
写着前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章,比如: ...
- Atitit. 单点登录sso 的解决方案 总结
Atitit. 单点登录sso 的解决方案 总结 1. 系统应用场景and SSO模式选型 2 2. 系统应用的原则与要求 2 2.1. 开发快速简单::绝大部分系统来说,开发快速简单为主 2 2. ...
- 十六、【适合中小企业的.Net轻量级开源框架】EnterpriseFrameWork框架核心类库之单点登录SSO
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U 单点登录(Single Sign ...
- CAS单点登录(SSO)完整教程
转:http://blog.csdn.net/frinder/article/details/7969925 CAS单点登录(SSO)完整教程(2012-02-01更新) 一.教程说明 前言 教程目的 ...
随机推荐
- 使用spring webflow,在前台页面中如何显示后端返回的错误信息
刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到 ...
- 解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
问题描述: 一次强制关机后出现了这个对话框,注销.重启均无法解决问题 解决过程[因为我用的英文版操作系统,所以截图都是英文,请大家自行对照自己的操作系统]: 1.ctrl+alt+del 打开任务管理 ...
- 虚拟机Linux 的一些基础命令和注释
cd命令 cd ==回到初始,主目录 cd - ==回到上一级目录交替 cd ~ ==回到root家目录 cd . ==当前目录 cd .. ==进入上一级目录 ls命令 ls == ...
- XJOI练习2神奇的供水系统
神奇的供水系统 在游遍神秘岛过程中,Z4发现每一个小岛上都有若干个奇怪的类似小水缸似的立方体,这另到Z4相当迷惑不解!这天晚上,忽然下起了一场大雨,在中心岛小树屋上类似那个圆形石槽中间的小孔中涌出了一 ...
- EDP转接IC NCS8805:RGB/LVDS转EDP芯片,带Scaler
RGB/LVDS-to-eDP Converter w/ Scaler1 FeaturesEmbedded-DisplayPort (eDP) Output1/2/4-lane eDP @ 1.62/ ...
- ATM取款小项目
项目要求: 1.用户需要从控制台输入账号密码,账号或者密码不正确报异常 2.每日取款的金额有限制(100,30000),否则报异常 3.每次取款都要有记录,并在下一次取款时显示出来 思路: 1.先在& ...
- apache的配置参数
#ErrorDocument 500 "The server made a boo boo."#ErrorDocument 404 /missing.html 1.Document ...
- FOJ 11月月赛题解
抽空在vjudge上做了这套题.剩下FZU 2208数论题不会. FZU 2205 这是个想法题,每次可以在上一次基础上加上边数/2的新边. #include <iostream> #in ...
- Android 性能优化——之控件的优化
Android 性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向自定义View的优化. 1.首先先说一下我们在自定义View中可能会犯的3个错误: 1)Use ...
- CSS背景图片常见属性设置
在CSS中,图片属性的设置是必不可少的,下面介绍一下常见的图片属性: 1)背景图片插入:background-image:url(位置及名称); //默认在父级元素内的左上角 2)背景平铺方式:ba ...