单点登录
在日常工作中,用户需要访问大量的信息资源,例如,用户首先要登录到操作系统中,然后进入各个应用系统。进入每一个系统都需要对用户的身份进行识别与验证,这样,用户需要提供多个用户帐号与口令,为了便于记忆,用户很可能把各种帐号与口令信息记录在笔记本上,甚至写在便条上并贴在办公桌或屏幕边,这就使口令信息很容易泄露出去,增加了组织信息系统被入侵的安全风险。为了解决这个问题,单点登录的概念被提了出来
所谓单点登录就是组织把多个操作系统平台和应用系统中的安全管理、身份识别与验证等功能集成到一个单一的安全管理过程中,以对组织中的安全操作进行集中化管理,并方便用户的使用。单点登录功能将与组织中的所有信息资源进行交互操作,可能的信息系统包括:
- 客户机/服务器及其他分布式系统
- 大型主机系统
- 网络安全,包括远程访问机制
单点登录过程从用户证书被引入组织IT计算环境中的第一个实例就开始了,SSO服务器作为主域,首先处理用户请求并根据事先建立的规则给用户颁发授权证书,然后用户携带授权证书去直接访问操作系统、应用系统、或其他信息资源,此时不再需要用户进行登录操作了。这些被访问的资源系统被称为备份域(或第二域)。
使用SSO管理多个平台的挑战来源于以下几个方面:
- 在建立所有信息系统可接受的安全证书时,需要克服组织中不同网络、操作系统、数据库和应用系统的异构特性。为了有效地集成SSO过程,SSO管理员应当了解每一个需要集成的系统是如何管理SSO安全证书信息、ACL授权规则、审核日志和报告的。
- 传统方式中的主机系统能够对用户进行维护与控制,但在SSO环境下,所有对用户的维护都必须由SSO管理员在SSO服务器中进行操作。这在一定程度上失去了单个主机管理的灵活性。
SSO的优点:
- 用户不再需要多个口令,所以用户可以选择记忆一个更强的口令。
- 简化了管理员要在多个平台上管理用户帐户与授权的问题。
- 多个平台和应用系统中用户经常忘记了口令,管理员需要为其重新设置,SSO的实施可以降低这类管理成本。
- 减少了用户登录进入多个应用系统与平台的时间。
SSO的缺点:
- 要SSO支持所有的不同类型的操作系统环境是很困难的,在一个企业的IT架构中,SSO的实施需要把大量的不同解决方案集中到一个总的方案中。
- 因为需要为不同类型的系统开发SSO接口界面,因此与SSO开发相关的成本是较高的。
- 在中心化、集中化管理环境下,如果SSO服务器出现单点故障,会造成整个信息系统的瘫痪。
SSO的三种实现方式:
以Cookie作为凭证媒介 :
最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。
用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。(存在的问题: Cookie不安全 不能跨域实现免登)通过JSONP实现:
用户在父应用中登录后,跟Session匹配的Cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求中带上父应用域名下的Cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。
通过页面重定向的方式:
最后一种介绍的方式,是通过父应用和子应用来回重定向中进行通信,实现信息的安全传递。
父应用提供一个GET方式的登录接口,用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个的登录页面,用户输入账号密码进行登录。如果用户已经登录了,则生成加密的Token,并且重定向到子应用提供的验证Token的接口,通过解密和校验之后,子应用登录当前用户。