这是我见过最强的单点登录认证系统!

来源:mp.weixin.qq.com/s/6jXz23nwU…

项目介绍

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

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

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

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

功能特性

标准认证协议

图片

登录支持

图片

  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. 开源、安全、自主可控。

主界面

图片

实时报表

图片

用户管理

图片

应用管理

图片

系统安全性

图片

安全性

二次密码登录

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

单点退出

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

会话超时设计

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

防暴力破解

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

连续登陆次失败策

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

静态密码策略

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

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

(2)密码长度最小值

(3)密码最长使用期限

(4)密码最短使用期限

(5)强制密码历史

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

双因素身份认证

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

密码存储

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

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

图片

bcrypt 编码算法

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

 

javascript

复制代码

$2a$10$/bTVvqqlH9UiE0ZJZ7N2Me3RIgUCdgMheyTgV0B4cMCSokPa.6oCa

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

bcrypt 特点

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

不推荐使用 md5

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

相关地址

  • Gitee:gitee.com/dromara/Max…
  • Github:github.com/dromara/Max…
  • 官方网站:www.maxkey.top

标签:

开源Java

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

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

相关文章

LeetCode 剑指 Offer II 054. 所有大于等于节点的值之和

给定一个二叉搜索树,请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下,二叉搜索树满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左右子树也必须…

账号和权限管理

大家无论安装完linux系统和windows系统后,都会要求你去新建一个用户去登录,不会让你们直接使用超级管理员身份去登录自己的系统,这样是为了安全性的考虑。 一、用户账号和组账号概述 1、用户账号类型: linux用户账号类型&#x…

redis主从扩容案例

redis3主3从,请参见:https://blog.csdn.net/weixin_49456013/article/details/134930716?spm1001.2014.3001.5501 现在需要进行扩容,变成4主4从,主要步骤如下: 1.新建6387、6388两个节点并启动 docker run -d --na…

DAY1C++

1、思维导图 2.定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符串&#xff0c;实现求字符串大小的函数。 #include <iostream>using namespace std;namespace myspace{string s1("call your name");int len_s(string s){return s1.length();…

ARM12.26

整理三个按键中断代码 key_it.h #ifndef __KEY_IT_H__ #define __KEY_IT_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_gic.h" #include"stm32mp1xx_exti.h" #include"stm32mp1xx_rcc.h" #include"led.h" void k…

基于程序UKM_RFDKLI20的信贷释放增强

一、概述 业务背景&#xff0c;项目中&#xff0c;针对信贷控制客户&#xff0c;业务单据在营销中台&#xff08;CRM&#xff09;中处理&#xff0c;但是信贷控制需依托SAP的信贷管理功能&#xff0c;因此功能设计为营销中台创建交货单&#xff0c;并同步至SAP判断信贷&#x…

【支持向量机】SVM线性可分支持向量机学习算法——硬间隔最大化支持向量机及例题详解

支特向量机(support vector machines, SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器。包含线性可分支持向量机、 线性支持向量机、非线性支持向量机。 当训练数据线性可分时&#xff0c;通过硬间隔最大化学习线性分类器&#xff0c; 即为线性…

开箱即用之U盘安装centos7系统详细教程

一、事先准备工具 U盘一个&#xff0c;大小起码要比需要安装刻录的镜像大。 需要安装的centos镜像&#xff0c;可以在官网自行下载。 二、安装步骤 将下载好的镜像包放入到U盘中。 在开机时按照不同品牌的电脑&#xff0c;点击不同的快捷键进入装机。 部分启动快捷键大全对…

围栏中心点

后端返回的数据格式是 [{height: 0,lat: 30.864277169098443,lng:114.35252972024682}{height: 1,lat: 30.864277169098443,lng:114.35252972024682}.........]我们要转换成 33.00494857612568,112.53886564762979;33.00307854503083,112.53728973842954;33.00170296814311,11…

【验证概括 SV的数据类型_2023.12.18】

验证概括 验证的过程是保证芯片实现符合规格说明书&#xff08;Specification&#xff0c;spec&#xff09;的过程 验证的两项任务&#xff1a; RTL sim&#xff1a;前仿真&#xff0c;验证功能 GLS-Gate (Level Simulation)&#xff1a;后仿真&#xff0c;验证功能和时序 验…

百万资金开证券账户ETF佣金最低可以做到多少?万0.5!

在金融市场中&#xff0c;交易者需要支付各种费用&#xff0c;包括佣金、管理费、交易费等。对于频繁交易的投资者来说&#xff0c;选择一个低费率的投资工具是提高投资收益的关键。在众多金融产品中&#xff0c;交易所交易基金&#xff08;ETF&#xff09;以其独特的优势吸引了…

lv12 linux设备树、网卡驱动移植

目录 1 设备树 1.1概念 1.2 设备树文件 1.3 设备树语法 2 Linux内核驱动移植 2.1 步骤 3 实验八网卡驱动移植 3.1 在内核源码的顶层目录下执行如下命令&#xff0c;修改内核配置 3.2 在设备树中添加网卡的硬件信息 3.3 修改时钟相关配置&#xff08;忽略无用的时钟&…

【代码随想录】刷题笔记Day37

前言 试一试早上晚上固定时间刷题会不会效率and养成习惯 135. 分发糖果 - 力扣&#xff08;LeetCode&#xff09; 两边一起判断容易顾此失彼从左到右遍历&#xff0c;只比较右比左大的情况&#xff0c;局部and全局&#xff1a;右比左大从右到左遍历&#xff0c;只比较左比右…

运维大模型探索之 Text2PromQL 问答机器人

作者&#xff1a;陈昆仪&#xff08;图杨&#xff09; 大家下午好&#xff0c;我是来自阿里云可观测团队的算法工程师陈昆仪。今天分享的主题是“和我交谈并获得您想要的PromQL”。今天我跟大家分享在将AIGC技术运用到可观测领域的探索。 今天分享主要包括5个部分&#xff1a;…

mysql 5.7.34二进制安装报错:VCRUNTIME140_1.DLL

1 Windows 2012R安装MySQL5.7.34二进制版本 执行命令&#xff0c;出现如下提示 mysqld --defaults-fileD:\mysql-5.7.43-winx64\my.ini --initialize 处理方法&#xff1a;下载文件&#xff0c;并替换到C:\windows\system32目录下即可 https://cn.dll-files.com/vcruntime140…

[pyqt5]QSpinBox相关函数

1.QSpinBox简介 QSpinBox是计数器控件&#xff0c;允许用户输入整数&#xff0c;或者通过上下按键递增或者递减&#xff0c;默认调整范围是0-99&#xff0c;每次变化步数1&#xff0c;用户可以自行修改范围和步数&#xff1b; QSpinBox常用方法如下&#xff1a; QSpinBox信号…

iPad绘画之旅:从小白到文创手账设计的萌系简笔画探索

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 iPad的出现&#xff0c;不仅改变了我们对电子设…

7. Resource database in UVM(UVM的资源数据库)

UVM集中资源数据库用于存储可配置&#xff08;configurable&#xff09;对象/object、变量/variables、虚拟接口/virtual interfaces、队列/queues、类句柄/class handles等&#xff0c;并从数据库中检索它们。这种可配置的测试平台为验证工程师提供了一定程度的自由度&#xf…

变换编码基本原理:理解视频编码中的关键技术

在视频编码中&#xff0c;变换编码是一项重要的基本原理&#xff0c;其通过对视频信号进行变换和压缩&#xff0c;实现了高效的视频数据编码和传输。本文将介绍变换编码的基本原理、应用及其在视频编码中的重要作用。 1. 变换编码的基本原理 1.1 变换编码概述 变换编码是一种…