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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三菱人机交互GT Designer的使用(二,开关,指示灯,数值显示,数值输入)

今天也开始每日一学,内容为开关,指示灯,数值显示,数值输入,以为这篇文章比较长,所有小编决分为3篇内容写完,谢谢大家阅读,不足之处,欢迎指正。 目录 开关 位&#xff0c…

【记录问题排查系列】记录CPU飙高问题排查过程篇(1)

CPU飙高问题排查 ✔️问题排查与解决✔️总结与思考 🍁前段时间我们新上了一个新的应用,因为流量一直不大,集群OPS大概只有5左右,写接口的t在30ms左右。 因为最近接入了新的业务,业务方给出的数据是日常QPS可以达到20…

染色法判定二分图算法总结

知识概览 一个图是二分图当且仅当图中不含奇数环(奇数环是边数为奇数的环)。图中不含奇数环,染色过程中一定没有矛盾。染色法判定二分图算法时间复杂度O(n m)。 例题展示 题目链接 860. 染色法判定二分图 - AcWing题库https://www.acwing.…

django项目中配置debug_toolbar

背景 在django项目中为了好调试本地代码和定位问题,实话说django项目中的有问题提示相当明显,在复杂的项目中,还想查看sql的执行情况和执行过程。debug_toolbar是django项目中值得选择的调试工具。 配置 pip install debug_toolbar 修改s…

机器学习部分相关概念

数据集(Data Set)即数据的集合,每一条单独的数据被称为样本(Sample)。 对于每个样本,它通常具有一些属性(Attribute)或者特征(Feature), 特征所具体取得值被称为特征值(Feature Value)。 西瓜数据集 色泽根蒂纹理青绿稍蜷模糊乌黑蜷缩清晰 …

【JAVA】使用OPENGL

从这个网址下载对应的库: LWJGL - Lightweight Java Game Libraryhttps://www.lwjgl.org/browse/release/3.3.3下载这个压缩包(实际上有很多版本3.3.3是比较新的版本:LWJGL - Lightweight Java Game Library): https…

在ASP.NET MVC下限制同一个IP地址单位时间间隔内的请求次数

在ASP.NET MVC下限制同一个IP地址单位时间间隔内的请求次数 有时候,当用户请求一个Controller下的Action,我们希望,在单位时间间隔内,比如每秒,每分钟,每小时,每天,每星期&#xf…

VS配置PCO相机SDK环境

VS配置PCO相机SDK环境 概述:最近要用到一款PCO相机,需要协调其他部件实现一些独特的功能。因此需要用到PCO相机的SDK,并正确配置环境。良好的环境是成功的一半。其SDK可以在官网下载,选择对应版本的安装即可。这里用的是pco.cpp.1.2.0 Windows,VS 2022 专业版。 链接: P…

软件测试/测试开发丨Pytest学习笔记

Pytest 格式要求 文件: 以 test_ 开头或以 _test 结尾类: 以 Test 开头方法/函数: 以 _test 开头测试类中不可以添加构造函数, 若添加构造函数将导致Pytest无法识别类下的测试方法 断言 与Unittest不同, 在Pytest中我们需要使用python自带的 assert 关键字进行断言 assert…

CGAL中三角形曲面网格近似

1、介绍 此软件包实现了变分形状近似(VSA)方法,通过更简单的表面三角形网格来近似输入表面网格。该算法的输入必须是: 三角形分割;组合2流形 输出是一个三角形汤,可以构建成多边形曲面网格。 给定一个输入曲…

【GNSS】LAMBDA 模糊度搜索 MATLAB 工具箱使用笔记

文章目录 Part.I IntroductionChap.I 传送门Chap.II 工具箱下载 Part.II LAMBDA 3.0 工具箱Chap.I 文件结构Chap.II 简单使用 Part.III Ps-LAMBDA 1.0 工具箱Chap.I 文件结构Chap.II 简单使用 Part.IV 待解决的问题Reference Part.I Introduction 最近进行模糊度搜索方面的研究…

TensorFlow的实战(详细代码)

1 TensorFlow基础 1.1 TensorFlow概要 TensorFlow使用数据流式图规划计算流程,它可以将计算映射到不同的硬件和操作系统平台。 1.2 TensorFlow编程模型简介 TensorFlow中的计算可表示为一个有向图(计算图),其中每个运算操作为一个节点,每个…

黑马头条--day11-kafkaStream热点文章实时计算

目录 一.定时计算与实时计算 二. 实时流式计算 1.概念 2. 应用场景 3.技术方案选型 三. Kafka Stream 1 概述 2.Kafka Streams的关键概念 3. KStream 4. Kafka Stream入门案例编写 5.SpringBoot集成Kafka Stream 四.app端热点文章计算 功能实现 用户行为&#xff…

数据库(Database)基础知识

什么是数据库 数据库是按照数据结构来组织、存储和管理数据的仓库,用户可以通过数据库管理系统对存储的数据进行增删改查操作。 数据库实际上是一个文件集合,本质就是一个文件系统,以文件的方式,将数据保存在电脑上。 什么是数据…

Postman常见问题及解决方法

1、网络连接问题 如果Postman无法发送请求或接收响应,可以尝试以下操作: 检查网络连接是否正常,包括检查网络设置、代理设置等。 确认请求的URL是否正确,并检查是否使用了正确的HTTP方法(例如GET、POST、PUT等&#…

深度强化学习DQN训练避障

目录 一.前言 二.代码 2.1完整代码 2.2运行环境 2.3动作空间 2.4奖励函数 2.5状态输入 2.6实验结果 一.前言 深度Q网络(DQN)是深度强化学习领域的一项革命性技术,它成功地将深度学习的强大感知能力与强化学习的决策能力相结合。在过…

BloombergGPT—金融领域大模型

文章目录 背景BloombergGPT数据集金融领域数据集通用数据集分词 模型模型结构模型相关参数训练配置训练过程 模型评估评估任务分布模型对比金融领域评估通用领域评估 背景 GPT-3的发布证明了训练非常大的自回归语言模型(LLM)的强大优势。GPT-3有1750亿个…

Java并发编程(一)

1.什么是线程和进程,区别是什么? 进程:进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 线程:线程与进程相似&#xff0…

亿欧智库详解2023人力资源数字化,红海云解决方案受关注

近日,亿欧智库发布《2023中国人力资源数字化企业需求分析》报告,基于调研结果对开展人力资源数字化转型的企业进行画像分析,揭示了不同企业下人力资源数字化转型需求的差异性,同时为企业人力资源数字化转型路径、方法及平台工具选…

springboot带微信端小程序智慧校园电子班牌系统源码

随着时代进步,数字信息化不断发展,很多学校都开始了数字化的转变。智慧校园电子班牌系统源码是电子班牌集合信息化技术、物联网、智能化,电子班牌以云平台、云服务器为基础,融合了班级文化展示、课程管理、物联控制、教务管理、考…