一、开源项目简介
MaxKey单点登录认证系统,谐音马克思的钥匙寓意是最大钥匙,是业界领先的企业级IAM身份管理和认证产品,支持OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM等标准协议,提供简单、标准、安全和开放的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、RBAC权限管理和资源管理等。
二、界面展示
MaxKey认证
登录界面
主界面
MaxKey管理
访问报表
用户管理
应用管理
三、功能概述
业界领先的身份管理和认证产品
MaxKey单点登录认证系统谐音为马克思的钥匙,寓意是最大钥匙,业界领先的企业级IAM身份管理和认证产品,国内开源IAM第一品牌
- 统一认证和单点登录,简化账号登录过程,保护账号和密码安全,对账号进行统一管理。
- 提供简单、标准、安全和开放的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、资源管理和权限管理(RBAC)等.
- 标准安全策略包括密码策略,访问策略;事后安全审计,对用户全生命周期审计、访问行为记录追溯审计、安全合规审计、安全风险预警。
单点登录(Single Sign On)简称为SSO,用户只需要登录认证中心一次就可以访问所有相互信任的应用系统,无需再次登录。
主要功能:
- 所有应用系统共享一个身份认证系统
- 所有应用系统能够识别和提取ticket信息
四、技术选型
产品特性
1、标准认证协议:
序号 |
协议 |
支持 |
1.1 |
OAuth 2.x/OpenID Connect |
高 |
1.2 |
SAML 2.0 |
高 |
1.3 |
JWT |
高 |
1.4 |
CAS |
高 |
1.5 |
FormBased |
中 |
1.6 |
TokenBased(Post/Cookie) |
中 |
1.7 |
ExtendApi |
低 |
1.8 |
EXT |
低 |
2、登录支持
序号 |
登录方式 |
支持 |
2.1 |
动态验证码 |
字母/数字/算术 |
2.2 |
双因素认证 |
短信/时间令牌/邮件 |
2.3 |
短信认证 |
腾讯云短信/阿里云短信/网易云信 |
2.4 |
时间令牌 |
登录易/Google/Microsoft Authenticator/FreeOTP/支持TOTP或者HOTP |
2.5 |
域认证 |
Kerberos/SPNEGO/AD域 |
2.6 |
LDAP |
OpenLDAP/ActiveDirectory/标准LDAP服务器 |
2.7 |
社交账号 |
微信/QQ/微博/钉钉/Google/Facebook/其他 |
2.8 |
扫码登录 |
企业微信/钉钉扫码登录 |
- 提供标准的认证接口以便于其他应用集成SSO,安全的移动接入,安全的API、第三方认证和互联网认证的整合。
- 提供用户生命周期管理,支持SCIM 2协议,基于Apache Kafka代理,通过连接器(Connector)实现身份供给同步。
- 认证多租户功能,支持集团下多企业独立管理或企业下不同部门数据隔离的,降低运维成本。
- 认证中心具有平台无关性、环境多样性,支持Web、手机、移动设备等, 如Apple iOS,Andriod等,将认证能力从B/S到移动应用全面覆盖。
- 多种认证机制并存,各应用系统可保留原有认证机制,同时集成认证中心的认证;应用具有高度独立性,不依赖认证中心,又可用使用认证中心的认证,实现单点登录。
- 基于JAVA EE平台,微服务架构,采用Spring、MySQL、tomcat、Redis、Apache Kafka等开源技术,扩展性强。
- 开源、安全、自主可控,许可证 Apache 2.0 License & MaxKey版权声明。
MaxKey身份管理
身份管理是什么
帐户
计算机处理有关人的数据记录。此类记录包含为其创建和管理帐户的系统所需的技术信息。
(数字)身份
由一个数字主体对其自身提出的一组主张的表现。 确认是你!
您是否曾经被公司雇用,进入组织或刚刚创建了新的OA帐户?公司,组织和云实体使用需要您的数据才能正常运行的应用程序:用户名,密码,电子邮件,名字,姓氏等。
这些信息从哪里来?当需要启用更多应用程序时会发生什么?而且,如果您获得晋升并获得了已经可以访问的应用程序的更多权利该怎么办?最重要的是,当您退出或他们轻轻放开您时会发生什么?
简而言之,身份管理在整个“ 身份生命周期”中负责管理身份数据 。
MaxKey身份管理架构
基于Apache Kafka和MaxKey身份连接器(Connector)的管理架构
连接器Connector
- ActiveDirectory Connector
- LDAP Connector
- JDBC Connector
- SCIM 2 Connector
- 企业微信 Connector
- 钉钉 Connector
- 飞书 Connector
- 华为WeLink Connector
- other coming soon
开发指南
开发工具及相关软件
软件 |
版本 |
备注 |
JDK |
1.8 + |
JAVA运行及开发工具包 |
Eclipse-jee |
2021-09 + |
推荐JAVA开发工具 |
Gradle |
7.2+ |
代码构建 |
Tomcat/tomcat-embed |
9 + |
应用服务器 |
MySQL |
8.0.21 + |
数据库服务器 |
Kafka |
2.5.0 + |
用户生命周期管理同步中间件 |
Redis |
6 + |
高速缓存内存数据库 |
OpenLDAP |
2.2 + |
企业目录服务器 |
程序目录
MaxKey |
一级目录 |
二级目录 |
三级目录 |
说明 |
README.md |
关于MaxKey项目 |
|||
LICENSE |
Apache License v2许可证 |
|||
NOTICE |
MaxKey版权声明 |
|||
ReleaseNotes.txt |
GA版本发布记录描述 |
|||
config |
构建方式配置Jar,Docker,Standard |
|||
maxkey-authentications |
登录认证 |
|||
maxkey-authentication-captcha |
登录认证-验证码 |
|||
maxkey-authentication-core |
登录认证-核心功能 |
|||
maxkey-authentication-otp |
登录认证-令牌和一次性口令 |
|||
maxkey-authentication-social |
登录认证-社交账号 |
|||
maxkey-common |
通用基础包和工具类 |
|||
maxkey-core |
基础包 |
|||
maxkey-IDEntitys |
身份管理 |
|||
maxkey-identity-rest |
REST身份管理接口 |
|||
maxkey-identity-scim |
SCIM2.0身份管理接口 |
|||
maxkey-synchronizers |
身份同步器 |
|||
maxkey-synchronizer |
同步器接口 |
|||
maxkey-synchronizer-activedirectory |
微软Active Directory同步器 |
|||
maxkey-synchronizer-feishu |
飞书同步器 |
|||
maxkey-synchronizer-ldap |
标准LDAP同步器 |
|||
maxkey-synchronizer-dingtalk |
钉钉同步器 |
|||
maxkey-synchronizer-workweixin |
企业微信同步器 |
|||
maxkey-lib |
使用jar包 |
|||
maxkey-persistence |
数据库持久化和Kafka同步 |
|||
maxkey-protocols |
认证协议实现 |
|||
maxkey-protocol-authorize |
认证协议及单点注销实现 |
|||
maxkey-protocol-cas |
CAS认证协议实现 |
|||
maxkey-protocol-extendapi |
扩展API实现 |
|||
maxkey-protocol-formbased |
Formbased实现,桌面认证实现开发浏览器插件实现 |
|||
maxkey-protocol-jwt |
JWT实现 |
|||
maxkey-protocol-OAuth-2.0 |
OAuth 2.x,OpenID Connect实现 |
|||
maxkey-protocol-saml-2.0 |
SAML 2.0实现 |
|||
maxkey-protocol-tokenbased |
tokenbased实现 |
|||
maxkey-webs |
web服务 |
|||
maxkey-boot-monitor |
基于Spring Boot Admin监控 |
|||
maxkey-web-maxkey |
认证系统 |
|||
maxkey-web-mgt |
管理系统 |
|||
maxkey-web-resources |
静态资源 |
|||
shellscript |
Window和LINUX启动脚本 |
|||
sql |
数据库MYSQL脚本,GA版本对应SQL |
|||
checkstyle |
编码规范配置 |
|||
build.gradle |
默认工程构建及版本控制 |
|||
build_cnf.gradle |
工程构建配置脚本 |
|||
gradle.properties |
版本参数配置 |
|||
settings.gradle |
项目引入 |
|||
gradle |
gradle的配置 |
|||
release.bat |
标准和Jar构建版本 |
|||
release_docker.bat |
docker构建版本 |
|||
setEnvVars.bat |
JDK及Gradle路径配置,开发人员配置 |
|||
release_cnf_docker.bat |
构建Docker配置 |
|||
release_cnf_jar.bat |
构建Jar配置 |
|||
release_cnf_standard.bat |
构建Standard配置 |
|||
eclipsePluginApply.bat |
设置IDE |
开发环境应用启动
MaxKey统一认证系统
maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyApplication.java
MaxKey身份安全管理系统
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtApplication.java
标准构建Release
1.配置环境变量
setEnvVars.bat
set JAVA_HOME=D:\JavaIDE\jdk1.8.0_91
set GRADLE_HOME=D:\IDE\gradle-7.2
2.启动构建
gradlew build -x test或者release.bat
3.构建结果
构建包路径
MaxKey/build/maxkey-jars
依赖包路径
MaxKey/build/MaxKey-v(version)GA
Docker构建release
1.Docker 构建配置
release_cnf_docker.bat
2.启动构建
gradlew build jib -x test或者release_docker.bat
3.构建的结果
maxkey-web-manage/
maxkey-web-maxkey/
SpringBoot构建release
1.SpringBoot Jar 构建配置
release_cnf_jar.bat
2.启动构建
gradlew build -x test或者release.bat
3.构建的结果
maxkey-webs/maxkey-web-manage/
maxkey-webs/maxkey-web-maxkey/
问题及解决
问题1
“A cycle was detected in the build path of project: XXX”
解决方法:
Eclipse Menu -> Window -> Preferences… -> Java -> Compiler -> Building -> Building path problems -> Circular dependencies -> 将Error改成Warning
问题2
Access restriction
解决方案:
Eclipse Menu -> Window -> Preferences… -> Java -> Compiler -> Errors/Warnings界面的Deprecated and restricted API下。把Forbidden reference (access rules): 的规则由默认的Error改为Warning即可。
五、开源协议
使用Apache-2.0开源协议
六、源码地址
私信回复:单点登录认证系统
或访问一飞开源:https://code.exmay.com/
如若转载,请注明出处:https://www.vsaren.com/88780.html