单点登录方案(SSO)

实现方案

单点登录系统的实施不应影响原有子系统的单独运行,即如果从子系统当独登录,只要账号和密码正确,子系统仍能正常运行。
单点登录系统的用户分为原有各子系统的用户和新用户。将子系统的旧用户导入新表时,不必导入密码字段。那么系统用户中password is null的是旧账户,oldSysId是原系统的userId,新增用户时,除了插入Mult_LoginInfo表外还须插入子系统用户表。
为减少登录时对账号的检索,新增用户的account必须保持唯一性。

新增用户
    Mult_LoginInfo保存account,userName,password,e_mail,subSys,生成userId,如果为多系统用户,生成多条仅subSys不同的记录;单点系统必须提供可逆的密码算法。
    往子系统用户表插入数据(包括密码),返回userId给Mult_LoginInfo.oldSysId;
修改用户
    将新的userName和e_mail保存到Mult_LoginInfo。
    同时也保存到subSys中
修改密码
    先通过原密码找出Mult_LoginInfo的对应用户,这个过程与“登录”一致。
    更改单点系统中的密码;
    同时更改多个子系统的密码(account,oldSysId,subSys)
删除用户
    先逐个删除子系统中的用户(oldSysId,subSys)
    如果顺利,则删除Mult_LoginInfo(userId)
登录
    如果登录名不存在Mult_LoginInfo.account中,throw Exception("用户名不正确")
    如果password is not null,单点系统验证密码,否则根据subSys交由子系统验证密码,如果通过,保存subSys。
    如果所有的系统都未通过,throw Exception("密码不对")
    通过之后,保存输入的账号和密码,进入主页,如果在点击子系统的入口,则先调用其登录程序。 

数据库实现

CREATE TABLE Mult_LoginInfo(
  userId    bigint  not null,
  account   varchar(20),
  userName  varchar(50),
  e_mail    varchar(50),
  oldSysId  int,
  subSys    varchar(10),
  password  varchar(50)
)

CREATE TABLE APPLICATION_SERVICE(
   id            int,
   subSys        varchar(8),
   subSys_desc   varchar(64),
   home_url      varchar(100),
   home_ico      varchar(32),
   login_fields  varchar(32),
   system_url varchar(100)
)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值