什么是单点登录
单点登录(Single Sign On) 简称为sso,是目前流行的企业业务整合的解决方案之一。SSO的定义是在多个引用系统中用户只需要登录一次就可以访问所有相互信任的应用系统。
单点登录的技术实现机制
单点登录的机制比较简单,用一个现实中的例子比较。颐和园是北京的一个著名的旅游景点,也是我们常去的地方。在颐和园内部有许多独立的景点,例如"苏州街","德和园"等,都可以在各个景点单独买票。很多游客需要游玩所有的景点,这种买票的方式很不方便,需要在每个景点门口排队买票,钱包拿进拿出的很不安全。于是绝大多数游客选在在大门买一张通票(也叫套票),就可以玩遍所有景点儿不需要重新再买票。他们只需要在每个景点门口出示一下套票就能够被允许进入每个独立的景点了。
单点登录的机制也是一样,如下图所示,当用户第一次访问应用系统1的时候,因为还没有登录,会被引导认证系统中进行登录。
- 根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据——ticket
- 用户在访问别的应用的时候(3,5)就会将这个ticket带上,作为自己认证的凭据,应用系统接收到请求之后会把ticket送到认证系统进行校验,检查ticket的合法性(4,6)。过如果通过校验,用户就可以在不用再次登录的情况下,访问应用系统2和应用系统3了
从上面的视图可以看出,要实现SSO,需要以下主要功能:
- 所有应用系统共享一个身份认证系统
统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库进行比较,对用户进行登录认证;
认证成功后,认证系统应该生成统一的认证标志(ticket),返回给用户。另外认证系统还应该对ticket进行校验,判断其有效性,
- 所有应用系统能够识别和提取ticket信息
要实现SSO的功能,让用户只登陆一次,就必须让应用系统能够识别已经登陆过的用户。应用系统应该能对ticket进行识别和提取
通过与认证系统的通讯,能自动判断当前用户是否登陆过,从而完成单点登录的功能。