介绍一种简单的单点登录方案

单点需求简介

      由于不同的应用系统由不同的公司提供,而很多情况下需要各系统之间相互访问,而每个系统都会有自己的一套账户结构。不可能统一为一套。为解决这一问题,各种单点方案应运而生。接下来我给大家介绍一套相对较为简单的单点思路。因为只是说说大概思路,所以其中所涉及到的安全问题需要在实施过程中自己去处理。

实现原理

     多系统之间通过第三方认证系统实现绑定各系统账户并建立单点登录关系。

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系统页面。

      

后序

     只是提供一个简单的单点方案,其中会有很多安全问题需要认真考虑并加强,大概思路就是这样,欢迎读者提出好的建议。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值