介绍一种简单的单点登录方案
2013-06-06 13:31
369 查看
单点需求简介
由于不同的应用系统由不同的公司提供,而很多情况下需要各系统之间相互访问,而每个系统都会有自己的一套账户结构。不可能统一为一套。为解决这一问题,各种单点方案应运而生。接下来我给大家介绍一套相对较为简单的单点思路。因为只是说说大概思路,所以其中所涉及到的安全问题需要在实施过程中自己去处理。
实现原理
多系统之间通过第三方认证系统实现绑定各系统账户并建立单点登录关系。
oracle数据库
用户表:存放各系统账户密码及所属系统信息。
账户关系表:根据关系ID绑定各系统之间建立关系的账户。
账户关系结构图
账户关系结构介绍
考虑到A、B、C三种系统以上的单点环境,只需A-B B-C 建立关系,而不需要A-C也绑定账户,也就是说各系统之间相互绑定的账户会在一条关系线上,而账户之间又通过关系ID联系在一起,从而达到三种及以上系统的单点登录,易于扩展需单点的系统。
单点登录流程
单点登录思路详解
注意:
1、各系统注册时都需将用户信息及系统标识同步到第三方的用户表中。
A系统 登录B系统
1、A系统向第三方认证系统发送单点请求。参数包括:Account(A系统账户)、password(A系统密码)、system_my(A系统标识ID)、system_you(B系统标识ID)、URL(验证成功后B系统提供的URL接口)
2、第三方认证系统根据请求参数中的账户、密码、及A系统的标识去用户表验证是否正确,通过则进行下一步验证,未通过则返回,这一步只是简单的防止恶意单点访问,其中所涉及到的安全细节还需要加强。
3、用户表验证通过后则去账户关系表根据账户和系统标识找出所在关系线的ID,根据该ID找到所有在这条关系线上的账户信息,根据B系统的System_ID的到B系统所对应的账户和密码。如果没有找到对应的账户密码,则说明未绑定B系统的账户信息,所以需要用户自己通过第三方提供的绑定页面绑定信息。而关系线的ID要与A系统的关系线ID一致,这样也就成功将A-B两系统的账户绑定在一起,而且之后不管是两个系统之间谁在与其他系统绑定,都会与另一个系统联系。同过关系线ID.以后不管有多少系统都只需要与关系线上任意系统绑定,则关系线上所有系统之间都能够相互单点登录。关系线ID就是它们联系的枢纽。
4、成功得到B系统的账户信息,通过B系统提供的URL拼上账户与密码信息成功登录B系统页面。
后序
只是提供一个简单的单点方案,其中会有很多安全问题需要认真考虑并加强,大概思路就是这样,欢迎读者提出好的建议。
由于不同的应用系统由不同的公司提供,而很多情况下需要各系统之间相互访问,而每个系统都会有自己的一套账户结构。不可能统一为一套。为解决这一问题,各种单点方案应运而生。接下来我给大家介绍一套相对较为简单的单点思路。因为只是说说大概思路,所以其中所涉及到的安全问题需要在实施过程中自己去处理。
实现原理
多系统之间通过第三方认证系统实现绑定各系统账户并建立单点登录关系。
oracle数据库
用户表:存放各系统账户密码及所属系统信息。
账户关系表:根据关系ID绑定各系统之间建立关系的账户。
表名 | 用户表 user | ||
字段名 | 字段类型 | 是否为空 | 描叙 |
Accout | Varchar2(50) | No | 账户 |
Password | Varchar2(50) | No | 密码 |
SystemId | Varchar2(50) | No | 所属系统ID |
表名 | 账户关系表 UserRelation | ||
字段名 | 字段类型 | 是否为空 | 描叙 |
ID | Varchar2(50) | No | 线形结构ID(非主键) |
User_Account | Varchar2(50) | No | 系统账户 |
User_password | Varchar2(50) | No | 系统账户密码 |
System_ID | Varchar2(50) | No | 所属系统ID |
账户关系结构介绍
考虑到A、B、C三种系统以上的单点环境,只需A-B B-C 建立关系,而不需要A-C也绑定账户,也就是说各系统之间相互绑定的账户会在一条关系线上,而账户之间又通过关系ID联系在一起,从而达到三种及以上系统的单点登录,易于扩展需单点的系统。
单点登录流程
单点登录思路详解
注意:
1、各系统注册时都需将用户信息及系统标识同步到第三方的用户表中。
A系统 登录B系统
1、A系统向第三方认证系统发送单点请求。参数包括:Account(A系统账户)、password(A系统密码)、system_my(A系统标识ID)、system_you(B系统标识ID)、URL(验证成功后B系统提供的URL接口)
2、第三方认证系统根据请求参数中的账户、密码、及A系统的标识去用户表验证是否正确,通过则进行下一步验证,未通过则返回,这一步只是简单的防止恶意单点访问,其中所涉及到的安全细节还需要加强。
3、用户表验证通过后则去账户关系表根据账户和系统标识找出所在关系线的ID,根据该ID找到所有在这条关系线上的账户信息,根据B系统的System_ID的到B系统所对应的账户和密码。如果没有找到对应的账户密码,则说明未绑定B系统的账户信息,所以需要用户自己通过第三方提供的绑定页面绑定信息。而关系线的ID要与A系统的关系线ID一致,这样也就成功将A-B两系统的账户绑定在一起,而且之后不管是两个系统之间谁在与其他系统绑定,都会与另一个系统联系。同过关系线ID.以后不管有多少系统都只需要与关系线上任意系统绑定,则关系线上所有系统之间都能够相互单点登录。关系线ID就是它们联系的枢纽。
4、成功得到B系统的账户信息,通过B系统提供的URL拼上账户与密码信息成功登录B系统页面。
后序
只是提供一个简单的单点方案,其中会有很多安全问题需要认真考虑并加强,大概思路就是这样,欢迎读者提出好的建议。
相关文章推荐
- 一种简单的登录加密方案
- 一种简单,轻量,灵活的C#对象转Json对象的方案(续)
- 大规模分布式数据处理平台Hadoop的介绍 一种可靠、高效、可伸缩的处理方案
- SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流
- 【Android N7.0】Framework层实现派发HOME按键到Application层的一种简单方案
- 一种简单有效的3D模型的动画多线程方案
- 一种简单的实现多线程断点续传的方案
- RAID不同方案的简单介绍
- PhantomJS实现最简单的模拟登录方案
- Mvc4单点登录之一Cas简单介绍
- Masonry 布局 cell高度适应的一种方案(实现类似朋友圈简单布局)
- [每日电路图] 9、介绍一种低价简单的4.2V锂电池充电及稳压(LDO)电路——RT9193,SD8017
- 多站点整合-单点登录简单方案
- VB6.0里实现"ShellWait"的一种简单方案(VB6.0代码)
- 一种简单有效的3D模型的动画多线程方案
- 一种简单,轻量,灵活的C#对象转Json对象的方案(上)
- RAID不同方案的简单介绍
- 以登录实例简单介绍Servlet使用
- Masonry 布局 cell 高度适应的一种方案(实现类似朋友圈简单布局)
- 【未完】[MySQL集群架构] 多主一从的一种简单方案