SSO(单点登录)实现方案

时间:2024-03-09 15:25:44

一、单点登录概述
    单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。IBM对SSO有一个形象的解释“单点登录、全网漫游”。

 SSO将一个企业内部所有域中的用户登录和用户帐号管理集中到一起,SSO的好处显而易见:

1. 减少用户在不同系统中登录耗费的时间,减少用户登录出错的可能性

2. 实现安全的同时避免了处理和保存多套系统用户的认证信息

3. 减少了系统管理员增加、删除用户和修改用户权限的时间

4. 增加了安全性:系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限

缺点:

1.不利于重构

因为涉及到的系统很多,要重构必须要兼容所有的系统,可能很耗时。

2. 无人看守桌面

因为只需要登录一次,所有的授权的应用系统都可以访问,可能导致一些很重要的信息泄露

 

二、单点登录的实现方案

1.流程图

 

a、词汇解释

 

    1.Service Ticket:进入每个客户端的凭证(是唯一不重复的)。

 

    2.Ticket Granted Cookie:全局唯一凭证(以cookie的形式存储),之所以能从一个系统跳转到列一个系统不用再次登录,全凭它。

 

b、流程说明

 

   ①用户通过终端访问客户端。

 

   ②客户端带着重定向地址(redirect_uri:为各自客户端当前页面地址[需要编码,防止有特殊字符])到验证中心登录页验证(没有登录情况下)。

 

   ③验证成功生成Ticket Granted Cookie和Service Tikcet并存储(为后面验证做准备)。

 

   ④同时通过url传参的方式(redirect_uri?ticket=Service Tikcet)重定向到客户端并为终端游览器设置Ticket Granted Cookie。

 

   ⑤客户端获得了Service Ticket,然后到验证中心验证。(需要客户端自己实现)

 

   ⑥验证中心到凭证存储服务器查询获取Service Ticket

 

   ⑦验证成功返回用户手机号并生成用户Session, 下次访问本系统判断Session就可以了,不用再去验证中心了。为了redirect_uri上的token不让用户看到(不要出现在地址栏中),各个客户端验证成功后去掉ticket=Service Tikcet参数再次重定向本系统。(需要客户端自己实现)

 

   ⑧用户成功进入系统;进入其他系统”验证中心”通过Ticket Granted Cookie为系统生成Service Tikcet,所以用户不需要再次登录了。