统一账号登录系统(单点登录)解决方案
一、 统一账号(单点登录)的概念——-单点登录(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 | 用户名 |
邮箱 | |
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单点登录系统,只是解决登录的问题,关于权限的问题还需要各应用系统自己处理。
因此关于权限,需要由系统提供接口
八、 结束