单点登录

本文介绍了单点登录(SSO)的基本概念和技术实现方法。主要探讨了如何在多系统环境中实现用户的一次登录就能获得其他所有系统的信任。讨论了利用Cookie和闪存对象存储信任关系的优缺点,并提出了在服务端存储信任关系的解决方案。

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下几个:

  • 存储信任
  • 验证信任

只要解决了以上的问题,达到了开头讲得效果就可以说是SSO。最简单实现SSO的方法就是用Cookie,实现流程如下所示:

不然发现以上的方案是把信任存储在客户端的Cookie里,这种方法虽然实现方便但立马会让人质疑两个问题:

  • Cookie不安全
  • 不能跨域免登

对于第一个问题一般都是通过加密Cookie来处理,第二个问题是硬伤,其实这种方案的思路的就是要把这个信任关系存储在客户端,要实现这个也不一定只能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。

一般说来,大型系统会采取在服务端存储信任关系的做法,实现流程如下所示:

以上方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里,说起来只是简单地从客户端移到了服务端,但其中几个问题需要重点解决:

  • 如何高效存储大量临时性的信任数据
  • 如何防止信息传递过程被篡改
  • 如何让SSO系统信任登录系统和免登系统

对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问。对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证就可以辨别信息是否被改过。对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。

以上只是提供了些简单的实现技术,但需要强调的是这只是技术实现而已,仅仅是为了解决上面谈到的一些问题,SSO本身来说并不是什么高科技,有了这个认识比较有利于我们深入探索SSO

随着信息技术和网络技术在组织机构中的广泛应用,很多机构单位已经拥有了各种各样的应用系统,如OA办公自动化系统、HR人力资源管理系统、财务系统、CRM客户关系管理系统、企业ERP系统、政府网上审批系统、学校一卡通系统、以及各种业务应用系统。  但用户要想享受到这些应用系统带来的诸多好处,就需要登录到许多不同的应用系统中,而每个系统都要求用户遵循其独立的身份认证安全策略,比如要求输入用户ID和口令。用户所使用的应用系统越多,登录时出错的可能性就会越大,受到非法截获和破坏的可能性也会大大增加,系统的安全性就会相应降低;而如果用户忘记了口令,不能正确的登录系统,就需要请求管理员的帮助,而且只能在重新获得口令之前等待,造成了系统和安全管理资源的不必要的开销,降低了系统的使用效率。有时,用户为避免这种尴尬情况的出现,也为记清楚登录信息,通常会采用简化用户名、密码,或者在多个系统中使用相同的口令,或者干脆将密码记录在笔记本上的做法,而这些都是会危及企业信息安全的几种不良的习惯。  此外,通常情况下,各个应用系统都存在自己独立的用户信息数据库和授权管理机制,故而如何实现中央用户目录数据、门户用户数据与各应用系统用户数据之间的用户数据同步和登录帐号/密码的对照,也是信息化建设面临的重要挑战之一。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值