本文是统一认证中心介绍开篇。
开发认证中心主要是希望减少更多的重复,开发一套多平台复用,才是美滋滋的设计。
相关文章
1.统一认证是什么
“ 统一登录” 指的是,将每个系统的登录拆出单独的服务,其它服务调用,来实现支持多平台单点登录的效果。
“ 统一认证” 指的是,在提供统一登录的同时,兼容多平台的用户、部门、角色、菜单管理。
2.开发背景
随着不同业务线的发展会有各式各样的后台系统,比如
- xx订单系统
- xx中台
- 运维系统
- 发布系统
- 测试平台
作为业务不同会接触各种各样的系统,那么问题来了?这些系统中通用的功能是什么?
- 登录
- 用户账号相关管理
- 菜单权限管理
- 角色管理
每做一个系统为了数据安全性用户登录肯定是要的,但是如果每做一个系统就做一套登录,用户相关管理功能,是不是重复的工作,重复的劳动力呢?
您可能会说,可以拷贝一份。
那么拷贝的这一份是不是需要包含代码+数据库,各平台的账号还是独立的?代码拷贝还是重复的代码,真的优雅吗?
期望功能需求
- 一个用户仅有一个账号(记密码也方便);
- 可以为用户的账号赋值任意系统的角色权限 ;
- SSO单点登录,若用户同时拥有系统A和系统B的权限,登录其中一个后另一个无需登录 ;
基于这些需求+减少重复+干掉重复 。 统一认证中心应用而生。
3.统一认证用于做什么
例如:我司有6个内部系统,每个系统都需要,登录+控制到按钮级别的权限控制。
这个时候就可以用到认证中心了,所有平台对接认证中心后,即有了登录+用户+角色相关的功能。
并且可以
实现用户账号统一,登录一个平台,多平台共享在线状态。
4.功能原理流程
简单概括:
认证中心负责登录-与用户账户以及赋权,并提供给其它子系统开放接口,用于下发用户在子系统的菜单权限。
5.技术架构
确实未引入高难度技术,也没有啥牛逼的高并发,多线程什么的。初衷就是先能支持多平台,减少开发重复。
开源的工程使用的单体结构,线上的话可以改成微服务或者-推荐负载部署至少2个以上节点保证服务的高可用
后端开发环境
- jdk1.8
- spirngBoot 2.1.17
- mysql 5.7
- redis 4.0
- mybatis
- druid 1.2.4
- security
- …
前端使用的是 Vue
6.功能介绍
6.1统一登录页
6.2我的平台
简介:这里指的是我可以登录的平台。
按钮功能
- 点击可直接跳转到相应的平台。
- 排序,可通过拖动实现平台间的排序 (可以把常用的排在前面)
6.3平台管理
简介:这里指的是您具有的那些平台管理的权限 。
按钮功能
- 新增平台。
- 点击平台图标可跳转到到对应平台维护页。
6.3.1平台详情
简介:前提,具有该平台管理权限
按钮功能
- 修改:可以修改平台基本信息
- 修改秘钥:该平台请求认证中心时加签的秘钥,不配置则默认不验签,推荐使用RSA。
- 系统管理员:可跳转至系统管理员界面,可以为该平台添加管理员。管理员可以维护该平台相关信息。
6.3.2用户管理
简介:所有平台的公共账户,所属部门可选,赋权角色后可在我的平台看到拥有该平台的跳转权限。
按钮功能
- 新增用户
- 修改:可为用户添加本平台的角色,部门,以及修改部分用户基本信息 ;
- 重置:为该用户重置登录密码 ;
- 移除:移除改用户与本系统的关系,(包括与当前平台所有关系,角色,部门等) ;
- 删除:删除改用户,谨慎使用,删除后所有平台均删除了;
6.3.3部门管理
简介:部门管理-可选数据,若无必要可不使用,每个平台的部门是独立的。
按钮功能
- 新增:为该平台新增一个部门
- 修改:修改该部门信息
- 删除:删除部门信息,若存在子部门则不允许删除
6.3.4菜单管理
简介:所有平台的公共账户,所属部门可选,赋权角色后可在我的平台看到拥有该平台的跳转权限。
区分平台:每个平台的部门是独立的。
按钮功能
- 新增: 为该平台新增一个部门
- 修改:修改该部门信息
- 删除:删除部门信息,若存在子部门则不允许删除
6.3.5角色管理
简介:角色数据管理,每个平台的角色是独立的。
按钮功能
- 新增: 为该平台新增一个角色
- 修改:修改该角色信息
- 删除:删除角色信息,若存在已有用户使用了,则不允许删除
- 已关联用户:可查看已经使用该角色的用户列表
已关联用户页
6.4系统监控
6.4.1在线用户
按钮功能
- 已登录子系统:可查看该用户已经登录的子系统,子系统数据为空则表示仅登录了认证中心
- 强退:退出认证中心-并退出所有已登录的子系统
6.4.2登录日志
简介:可查看每次一次登录的记录信息,以及登录失败的具体原因
关注程序员小强公众号更多编程趣事,知识心得与您分享