SpringBoot单点登录认证系统MaxKey(附开源项目地址)

news2024/11/26 22:16:51

1 项目介绍

MaxKey 单点登录认证系统,谐音马克思的钥匙寓意是最大钥匙,支持 OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM 等标准协议,提供简单、标准、安全和开放的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、RBAC 权限管理和资源管理等。

单点登录(Single Sign On)简称为SSO 、用户只需要登录认证中心一次就可>以访问所有相互信任的应用系统,无需再次登录,主要功能:

  1. 所有应用系统共享一个身份认证系统
  2. 所有应用系统能够识别和提取 ticket 信息

MaxKey 注重企业级场景下的性能、安全和易用性,广泛应用于医疗、金融、政府和制造等行业。

2 功能特性

2 .1 标准认证协议

在这里插入图片描述

2.2 登录支持

在这里插入图片描述

  1. 提供标准的认证接口以便于其他应用集成 SSO,安全的移动接入,安全的 API、第三方认证和互联网认证的整合。
  2. 提供用户生命周期管理,支持 SCIM 2 协议;开箱即用的连接器(Connector)实现身份供给同步。
  3. 简化微软 Active Directory 域控、标准 LDAP 服务器机构和账号管理,密码自助服务重置密码。
  4. IDaas 多租户功能,支持集团下多企业独立管理或企业下不同部门数据隔离的,降低运维成本。
  5. 认证中心具有平台无关性、环境多样性,支持 Web、手机、移动设备等, 如 Apple iOS,Andriod 等,将认证能力从 B/S 到移动应用全面覆盖。
  6. 配置化的密码策略、访问策略;支持 Ip2region 或 GeoLite2 地理库精准 IP 定位 ,强大安全审计,对用户全生命周期审计、访问行为记录追溯审计、安全合规审计、安全风险预警。
  7. 基于 Java EE 平台,微服务架构,采用 Spring、MySQL、Tomcat、Redis、MQ 等开源技术,扩展性强。
  8. 开源、安全、自主可控。

2.3 界面展示

2.3.1 主界面

在这里插入图片描述

2.3.2 实时报表

在这里插入图片描述

2.3.3 用户管理

在这里插入图片描述

2.3.4 应用管理

在这里插入图片描述

3 系统安全性

在这里插入图片描述

3.1 二次密码登录

单点登录使用户能在一个入口完成登录后,一般情况下用户在点击应用图标时,直接通过相应的协议,登录到应用系统;但是有时要针对特定的用户、特定的应用进行二次密码校验的功能,防止关键系统的登录,导致的信息敏感泄露,比如财务系统或者个人工资账单,在实际工作中经常出现工作代理的情况,即使出现单点登录的密码泄露,二次密码也很好地保护敏感应用系统;

3.2 单点退出

单点退出是指用户在一个系统退出后,其所能单点登录访问的所有系统都同时退出。单点退出主要是为提高安全性,避免用户忘记退出所有应用而造成信息的泄密。其实现方式也非常简单,由于 SSO 和单点登录的应用都是分开的,使用不同的域名,只是通过认证协议帮助用户在多个应用系统中传递身份和登录系统。因此,首先注销单点登录应用,然后修改每个应用系统都使用 MaxKey 的单点退出页面,单点登录的退出页面会将用户登录的 Session 注销掉。

3.3 会话超时

为节约服务端资源,并基于安全性考虑,对于长时间没有活动的客户端其会话将被自动终结。同时,为保证用户的单点登录不受影响,其所有超时都在 MaxKey 端集中控制,即 MaxKey 的会话超时时间比集成的应用系统会话超时时间略长。例如希望实现用户不活动 30 分钟就终止会话,则将 MaxKey 的不活动超时时间设置成 30 分钟,集成应用的不活动超时时间设置成 40 分钟。如果用户登录后打开多个应用,并一直只访问某个应用,而其他应用长时间没有被访问导致应用会话超时,用户再次点击该已超时的应用时,用户会被应用要求重新登录。为避免这种情况,应用检测到用户会话超时后需将用户重定向到登录页面,MaxKey 此时再次实现单点登录,登录成功后应用可重新将用户定向到期之前访问的 URL 或者该应用的首页。

3.4 防暴力破解

由于认证系统需对互联网提供服务,为避免互联网中恶意的暴力破解,系统需提供防暴力破解能力。防暴力破解的关键是提供一种机制,能阻止计算机用穷举法试探用户口令。目前一种广泛使用的防暴力破解技术是 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),即在登录界面除用户名+口令之外再增加一个扭曲的数字或字母字段,让用户输入,这种字段人很容易看懂,但是计算机却很难识别,从而避免计算机用穷举法猜测用户密码,这种技术的应用在互联网应用上经常可以看到。

3.5 连续登陆次失败策

使用连续多次登录失败即锁定帐号一定时间的设置,例如如果某个帐号连续 6 次登录失败就锁定该帐号两小时,这种方式也可以避免暴力破解。

3.6 静态密码策略

对密码进行限制无非是为了强制用户设置一个更加安全的密码,密码策略主要有以下几种:

(1)密码必须符合复杂性要求

(2)密码长度最小值

(3)密码最长使用期限

(4)密码最短使用期限

(5)强制密码历史

(6)使用可还原的加密存储密码

3.7 双因素身份认证

双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统。双因素认证是一种采用时间同步技术的系统,采用了基于时间、事件和密钥三变量而产生的一次性密码来代替传统的静态密码。每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间、事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的认证。就像我们去银行办卡送的口令牌. 多因素认证(MFA),是一种计算机访问控制的方法,用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源。MFA 的目的是建立一个多层次的防御,使未经授权的人访问计算机系统或网络更加困难,从而提高安全性。

3.8 密码存储

基于 Spring Security 实现密码加密和验证,规则是通过对密码明文添加**{noop}**前缀

MaxKey 默认密码加密策略 BCrypt,用户表(userinfo)->密码字段(password),存储方式**{类型}密文**

在这里插入图片描述

3.8.1 bcrypt 编码算法

bcrypt 使用的是布鲁斯·施内尔在 1993 年发布的 Blowfish 加密算法。bcrypt 算法将 salt 随机并混入最终加密后的密码,验证时也无需单独提供之前的 salt,从而无需单独处理 salt 问题。加密后的格式一般为:

$2a$10$/bTVvqqlH9UiE0ZJZ7N2Me3RIgUCdgMheyTgV0B4cMCSokPa.6oCa

其中:$是分割符,无意义;2a是bcrypt加密版本号;10是cost的值;而后的前22位是salt值;再然后的字符串就是密码的密文了。

3.8.2 bcrypt 特点

bcrypt 有个特点就是非常慢。这大大提高了使用彩虹表进行破解的难度。也就是说该类型的密码暗文拥有让破解者无法忍受的时间成本。同时对于开发者来说也需要注意该时长是否能超出系统忍受范围内。通常是 MD5 的数千倍。同样的密码每次使用 bcrypt 编码,密码暗文都是不一样的。也就是说你有两个网站如果都使用了 bcrypt 它们的暗文是不一样的,这不会因为一个网站泄露密码暗文而使另一个网站也泄露密码暗文。所以从 bcrypt 的特点上来看,其安全强度还是非常有保证的。

3.8.3 不推荐使用 md5

首先 md5 不是加密算法,是哈希摘要。以前通常使用其作为密码哈希来保护密码。由于彩虹表的出现,md5 和 sha1 之类的摘要算法都已经不安全了。如果有不相信的同学 可以到一些解密网站 如 cmd5 网站尝试解密 你会发现 md5 和 sha1 是真的非常容易被破解。

4 开源项目地址

  • Gitee:https://gitee.com/dromara/MaxKey
  • Github:https://github.com/dromara/MaxKey
  • 官方网站:http://www.maxkey.top

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何把握品牌新五感,打造小红书品牌

随着社会经济的发展,市场的进步,以及人们思维方式的改变。年轻人面对市场,面对营销,关注点也在发生着改变。那什么是小红书品牌新五感,如何把握品牌新五感,打造小红书品牌! 一、品牌五感是什么 …

查找dll的开放函数以及dll的依赖dll

1.进入一个vs的cmd窗口 2.dumpbin /exports XXX.dll,分析 XXX.dll 中有哪些函数。 例如查询: C:\Users\levi0\Desktop\testPro\NewCSDll\NewCSDll\bin\x64\Debug\GBRAnalyze.dll 3. dumpbin /dependents 文件名(带路径)命令,回车&…

servlet+jdbc实现用户注册功能

一、需求 在Servlet中可以使用JDBC技术访问数据库,常见功能如下: 查询DB数据,然后生成显示页面,例如:列表显示功能。接收请求参数,然后对DB操作,例如:注册、登录、修改密码等功能。…

Linux中磁盘管理与文件系统

目录 一.磁盘基础: 1.磁盘的结构: 2.硬盘的数据结构: 3.硬盘存储容量 : 4.硬盘接口类型: 二.MBR与磁盘分区: 1.MBR的概念: 2.硬盘的分区: 为什么分区: 2.表示&am…

【PHP】B/S手术室麻醉信息管理系统源码

手术麻醉临床信息系统全面覆盖从患者入院,经过术前、术中、术后,直至出院的全过程。通过与相关医疗仪器的设备集成,不但可以轻松集成手术室传统监护设备如监护仪、麻醉机、呼吸机,也能与血气分析仪等设备对接,快速获取…

java并发编程十三 线程池

文章目录 线程池自定义线程池ThreadPoolExecutor提交任务关闭线程池任务调度线程池正确处理执行任务异常 线程池 自定义线程池 步骤1&#xff1a;自定义拒绝策略接口 FunctionalInterface // 拒绝策略 public interface RejectPolicy<T> {void reject(BlockingQueue&l…

LeetCode---120双周赛

题目列表 2970. 统计移除递增子数组的数目 I 2971. 找到最大周长的多边形 2972. 统计移除递增子数组的数目 II 2973. 树中每个节点放置的金币数目 一、统计移除递增子数组的数目I 这题的数据范围不高&#xff0c;可以直接暴力&#xff0c;后面的第三题和它一样&#xff0c…

程序员面试笔试通关宝典系列丛书(由清华大学出版社出版)

程序员面试笔试通关宝典系列——编程职场成功的必备秘籍 由清华大学出版社出版的专为编程爱好者和职业开发者打造的“程序员面试笔试通关宝典”系列丛书。该系列包含五本专业指南&#xff0c;覆盖数据库、Java、前端、通用编程和Python五个领域。 这些书籍深度解析各领域的核…

面试题:MySQL 自增主键一定是连续的吗?

文章目录 测试环境&#xff1a;一、自增值的属性特征&#xff1a;1. 自增主键值是存储在哪的&#xff1f;2. 自增主键值的修改机制&#xff1f; 二、新增语句自增主键是如何变化的&#xff1a;三、自增主键值不连续情况&#xff1a;&#xff08;唯一主键冲突&#xff09;四、自…

AIGC开发:调用openai的API接口

简介 开始进行最简单的使用&#xff1a;通过API调用openai的模型能力 OpenAI的能力如下图&#xff1a; 文本生成模型 OpenAI 的文本生成模型&#xff08;通常称为生成式预训练 Transformer 或大型语言模型&#xff09;经过训练可以理解自然语言、代码和图像。这些模型提供文…

扫雷(c语言)

先开一个test.c文件用来游戏的逻辑测试&#xff0c;在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤&#xff1a; 游戏规则&#xff1a; 输入1&#xff08;0&#xff09;开始&#xff08;结束&#xff09;游戏&#xff0c;输入一个坐标&#xff0c;如果该坐…

新药(化药)注册申报资料都包含哪些?

新药的注册申报是新药上市前的重要步骤,其流程可以简单概括为①前期准备→②申报材料准备→③递交注册申请→④审评和审批→⑤监管和跟踪。本文将着重介绍新药(化药)注册申报的一般流程和主要环节(附流程图)。(关于新药注册申报成功率和耗费时间问题写到最后) ①前期准备 在开…

年底医保新改革,如何短,平,快搞定his医保接口升级

1. 先说说我负责运维的医院背景&#xff1a; 省会中心城市三甲&#xff0c;电脑共计1500台左右。其中安装有his系统的电脑大约600台&#xff0c;也就是说需要给600台医护人员使用电脑进行医保接口升级。 近期有幸参与了院里HIS系统的升级工作&#xff0c;赶上特殊时期&#x…

数字身份验证:跨境电商如何应对账户安全挑战?

在数字化时代&#xff0c;随着跨境电商的蓬勃发展&#xff0c;账户安全问题逐渐成为行业和消费者关注的焦点。随着网络犯罪日益猖獗&#xff0c;用户的数字身份安全面临着更加复杂的威胁。本文将深入探讨数字身份验证在跨境电商中的重要性&#xff0c;并探讨各种创新技术和策略…

SQL Server 索引和视图

CSDN 成就一亿技术人&#xff01; 难度指数&#xff1a;* * * CSDN 成就一亿技术人&#xff01; 目录 1.索引 什么是索引&#xff1f; 索引的作用&#xff1f; 索引的分类 1. 唯一索引 2. 主键索引 3. 聚集索引 4.非聚集索引 5.复合索引 6.全文搜索 索引的创建&am…

docker-compose部署zabbix服务

1.首先要有docker环境&#xff0c; 关闭防火墙&#xff0c;selinux 开启docker&#xff0c;并设置开机自启动 Linux的docker的安装https://blog.csdn.net/m0_58146415/article/details/134654933 2.docker-compose的安装----github下载 curl -SL https://github.com/docke…

Unity Shader-真实下雨路面

Unity Shader-真实下雨路面 简介素材1.准备插件Amplify Shader Editor&#xff08;这里我使用的是1.6.4最新版&#xff09;2.贴纸和切图d 一、创建一个Shader Surface&#xff0c;实现气泡播放效果二、叠加一次气泡播放效果&#xff0c;使其看起来更多&#xff0c;更无序三、小…

【C++入门(一)】:详解C++语言的发展及其重要性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f324;️什么是C&#x1f324;️C的发展史&#x1f324;️C的重要性☁️语言的广泛度☁️C的领域⭐…

鸿蒙系列--组件介绍之容器组件

一、Badge 描述&#xff1a;给其他组件添加标记 子组件&#xff1a;支持单个子组件 1.创建数字标记 Badge(value: {count: number, position?: BadgePosition, maxCount?: number, style: BadgeStyle}) 2.创建字符串标记 Badge(value: {value: string, position?: Badge…