单点登录方案(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

相关文章

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us

MySQL容灾备份的实现方案

《MySQL容灾备份的实现方案》进行MySQL的容灾备份是确保数据安全和业务连续性的关键步骤,容灾备份可以分为本地备份和远程备份,主要包括逻辑备份和物理备份两种方式,下面就来具体介绍一下... 目录一、逻辑备份1. 使用mysqldump进行逻辑备份1.1 全库备份1.2 单库备份1.3 单表备份2. 恢复

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook