SSO 是 什 么?
一、SSO是什么,
定义:SSO (Single Sign On)单点登录,简单的说,就是在一个系统共存的环境
下,用户在一处系统登录后,在进入其他的子系统,就不用在重新输入账号和密码了。
例子:网页博客和网页邮箱,当你输入了自己的账号密码,登录了网页邮箱之后,你要
进入网页博客,只需直接进入就行了,不用在重新输入网易邮箱的账户和密码。
比如:
baidu.com => zhidao.baidu.com、music.baidu.com、baike.baidu.com......
qq.com => feiji.qq.com、cd.qq.com、music.qq.com
核心:实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如
何验证这个信任的有效性,因此要点也就以下几个:
1, 存储信任
2, 验证信任
只要解决了以上的问题,达到了开头讲得效果就可以说是SSO。最简单实现SSO的方法
就是用Cookie,顺序图(Sequence Diagram)如下:
二、体系组成:
(1)有三个角色,
User(多个)
Web应用(多个)
SSO认证中心(一个)
(2)客户端和服务端
CAS Server
CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户
名 / 密码等凭证 (Credentials) 。就是 安装在服务器端的一个web程序 目前有耶鲁大
学的 也有其它机构开发的它是复制认证的服务器
CAS Client
CAS Client部署在客户端,当有对本地 Web 应用受保护资源的访问请求,并且需
要对请求方进行身份认证,重定向到 CAS Server 进行认证。
三、实现:
实现方式一般有两种:跳转和弹出层回调。
当用户在子系统未登录时,便会携带相关参数,比如tieba.baidu.com去到
SSO(passport.baidu.com)进行登录登录成功SSO会生成ticket key并附加给源网址跳
转回去,这个时候SSO上已经有用户的登录状态了,但是各个子系统仍然没有登录态,所
以根据这个ticket设置各个子系统独立的登录态是需要的。
当在SSO验证结束后,会回到子系统,子系统会根据得到的ticket(SSO为此次登录生
成的用户基本信息加密串)获取用户的基本信息,从而在本站设置登录态。
四、小结单点登录优缺点
优点:说白了SSO就是让用户只通过一次登录访问所有应用程序。它提供一个统一的
机制来管理用户的身份验证,并实现业务规则来决定用户对应用程序和数据的访问。
·提高用户的效率。用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另
外,用户忘记密码并求助于支持人员的情况也会减少。
·提高开发人员的效率。SSO 为开发人员提供了一个通用的身份验证框架。实际上,
如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,
只要对应用程序的请求附带一个用户名,身份验证就已经完成了。
·简化管理。如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。简
化的程度取决于应用程序,因为 SSO 只处理身份验证。所以,应用程序可能仍然需要设
置用户的属性(比如访问特权)。
缺点:
·难以重构。对 SSO 解决方案进行重构来适应现有的应用程序很困难,很耗费时间而且昂贵。
·无人看守的桌面。实现 SSO 会减少一些安全风险,但是也增加了其他安全风险。例如,如果用户登录之后离开了他的机器,恶意用户就可以访问他的资源。尽管这是一
个的安全问题,但是 SSO 会使这个问题更加严重,因为恶意用户可以访问所有获
得授权的资源。在采用多次登录方式时,用户每次只能登录进一个系统,所以只有一个
资源被泄露。
·单点攻击。在使用单点登录时,所有应用程序使用一个集中的身份验证服务。对于
希望实施拒绝服务攻击的黑客,这是一个有吸引力的目标。