统一账号登录系统(单点登录)解决方案

一、     统一账号(单点登录)的概念——-单点登录(Single Sign On)

我们无时无刻在使用单点登录,如:我们登录Gmail邮箱登录时,我们不仅仅的是使用邮箱,我们还可以使用Gtalk、Google图书等不同的产品。单点登录的含义就是:在多个登录系统中,用户只需要登录一次就可以了,不需要在其它系统重新登录。

 

二、     关键数据

登录网路地址

Gmail  https://

Gtalk   https://

返回地址

ru=http

continue=http

应用ID

Appid=googlemail

Source=googletalk

授权凭证

 

 

三、     数据如何保护

1.       数据加密   

                     i.           可逆加密 or 不可逆加密,选择可逆加密算法  DES   Triple DES AES  (一般反向可以获取数据

                   ii.           公共密钥  or各应用建立独立的密钥,这里选择独立的密钥;每个系统应用都有一个唯一的AppId和一个与其对应的登录密钥;不同的应用系统使用不同的密钥,目的是为了防止伪造密钥在各应用系统之间相互登录。

2.       密钥管理

                     i.           SSO 系统 统一管理各个系统的密钥

                   ii.           根据AppId区分应用系统

                  iii.           SSO系统也是一个应用,有自己独立的密码

                  iv.           密钥有一定的时效性,会过期

四、     授权凭证信息

1.       SSO应用系统登录时,SSO会验证用户身份,并向应用返回一个代表用户身份的凭证。

2.       凭证一般类似BASE64字符串的形式存在

3.       凭证中包含的加密信息。SSO应用系统俊拥有凭证密钥。可解开凭证的用户的身份信息。

4.       凭证一般包括:

                     i.           加密信息用户名、用户ID、凭证生成时间、凭证时效时间

                   ii.           未加密信息,如AppID

5.       密钥的解密和

属性名

说明

Nonce

随机数,防止串改

Create

生成时间

Expire

时效时间

UserID

用户ID

UserIp

用户登录IP

UserName

用户名

Email

邮箱

Hash(将上面的Hash)

防止数据被串改

 

6.       授权凭证的验证和解析

                     i.           两种验证

1)     SSO服务验证   credential->App Server->SSO Server  桌面系统

2)     应用自行验证   credential->App Server--SSO Server  B/S系统

 

五、     授权凭证的验证流程

1、          晓验APPID

2、          根据密钥编号对应找出密钥解密数据

3、          效验Hash值

4、          效验IP

5、          效验授权凭证是否到期

6、          更新授权凭证

 

六、     客户端单点登录系统流程(本质的意义时系统应用之间授权凭证之间的交换)

客户端

SSO

1 提交账号密码登录

2 返回客户端授权凭证

3 保持登录

4 返回客户端新的授权凭证

 

浏览器

5 点击站点链接(应用1)

访问页面(使用客户端凭证)

 

302跳转  带上返回地址 合法

 

请求SSO网页

 

302跳转,url带上应用ID的网址

 

访问页面

 

200 设置凭证到cookie  新的凭证

 

七、     不同站点之间的应用

用户

浏览器

应用

1 浏览网网站1

 

 

 

2 访问页面

 

 

3 302跳转

 

 

4 请求登录网页

 

 

5  200 OK  登录表单

 

6 输入账号密码

 

 

 

7 提交表单

 

 

8 302跳转

 

 

9 访问网页

 

 

10 200 OK设置凭证到cookie

 

 

11 访问页面[Url凭证]

 

 

12  200 OK

 

用户

浏览器

应用站点2

13浏览网站2

 

 

 

14 访问页面

 

 

15 302跳转[带上访问地址]

 

 

16 请求登录网页

 

 

17 302跳转  设置cookie,url中带上凭证(站定2的凭证,从sso中取得)

 

 

18 访问页面  带上凭证

 

 

19 200cookie,设置凭证到cookie

 

 

20 访问页面 cookie带凭证

 

 

21  200 OK

 

 

伪造凭证,必须知道算法和协议,所以时很难伪造凭证的。

 

SSO单点登录系统,只是解决登录的问题,关于权限的问题还需要各应用系统自己处理。

因此关于权限,需要由系统提供接口

八、     结束