单点登录方案(SSO)

2024-04-21 21:58
文章标签 登录 方案 单点 sso

本文主要是介绍单点登录方案(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)
)

这篇关于单点登录方案(SSO)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/924124

相关文章

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量