单点登录SSO(Single Sign On)想必大家都耳熟能详,企业信息化过程中会不断的衍生出不同技术平台、不同业务范围、不同场景的应用或支持系统,与此同时我们也有可能会因为高层架构的决策会采用SSO这种模式来组织、细化不同职责的子系统登录;总的来说SSO的好处如下:
1、从扩展性层面上,提供了统一的标准,便于不同时期APP的部署与接入
2、从兼容性方面,便于不同技术平台的应用系统无缝接入
3、从数据共享层面,便于用户、账号信息的集中存储与统一管理,便于账户安全性的管理
4、从开发成本层面上,提高了开发的效率,减少了维护量
5、从友好性层面上,便于终端用户的账号管理与维护
提高了终端用户使用不同平台的便捷与高效性
当然如能确保在很长一段时期内,系统不会有多个登录应用出现或者每个应用不需要支持一键登录,那么可以简单原则不必考虑SSO。
SSO的实现分两种机制SESSION、COOKIE,绝大大部分的企业应用一般都采用后者,例如:盛大的sdo.com、www.shengpay.com,其实现原理大致如下:
1、登录
主要过程:
在实施过程中,往往可能有以下特殊情况:由SSO服务端提供登录嵌入页面,APP增加判断用户是否为变更登录
2、注销
略
目前CAS被认为是最好的单点登录开源产品,大部分的公司也都在用,虽然CAS是JAVA语言开发的,但它提供了不少的接入支持组件,有关CAS的相关描述请见:
2、CAS协议:http://www.jasig.org/cas/protocol
一般来说,搭建CAS验证需要两个步骤:
1、搭建CAS服务器
一般来说,应该可以满足需要,如有特殊逻辑,可以考虑适当修改CAS代码。
另外,一般服务验证都会采用SSL协议来保证SSO的安全性机制,具体请参见SSL实现:http://blog.csdn.net/webwalker/article/details/5658155
结合CAS的实现请参加上述的step by step
2、实现应用端验证模块
客户端应用程序可以通过三个URL路径来使用,分别是登录URL(login URL),校验URL(validation URL)和登出URL(logout URL)
当然除了SSO之外,现在很多线上应用大都已提供开放平台,向外部应用平台提供内部用户登录的标识验证,大大的增加了终端用户账号管理的方便性、统一性,似乎可以把这类模型的互联看成是基于SOA的验证架构的,那么大胆的假想下一步是不是可以考虑每个互联网用户只有唯一的互联网账号?这或许这是个有意思的但是又不太可能的问题。