midpoint源码阅读一(midpoint简介)

最近在研究身份管理这块儿领域,本人初涉这块儿领域,在业务上的了解不是很深入,俗话说做事需要站在巨人的肩膀上,目前在开源领域中专注做这一领域的比较好的项目是midpoint,现将对该项目的一个源码解读逐步记录下来。本篇为第一篇,主要是对midpoint的介绍和其使用到的技术的简单介绍。
1、midpoint官方文档
官方介绍文档:https://wiki.evolveum.com/display/midPoint/Home
下载地址:https://evolveum.com/download/
GitHub地址:https://github.com/Evolveum/midpoint
2、midpoint简介
关于什么是midpoint,它能做什么,官网介绍地址为:https://evolveum.com/midpoint/about-midpoint/
midpoint目前还没有中文的文档,在此我做一个简单的介绍。
midpoint是身份管理系统。 它是个综合系统,可从不同的存储库中同步身份信息,以统一的形式使用它们,包含角色管理、授权、认证、权利管理、工作流等,几乎涵盖身份管理的每个方面。 它在身份和访问管理(IAM)领域属于“管理”部分。
3、midpoint架构
官网介绍在此:https://wiki.evolveum.com/display/midPoint/Architecture+and+Design
架构
从上面的官网介绍的架构图看,我们看出midpoiont由如下子系统构成:
1)界面子系统(GUI Subsystem)
顾名思义,界面子系统即是用户操作的界面
2)IDM Model子系统(IDM Model Subsystem)
该子系统提供了IDM Model Interface(IDM Model接口),该接口用于连接用户界面和业务逻辑,同时也能被其他系统所使用。
3)物资提供子系统(Provisioning Subsystem)
该子系统从我的了解中,它是连接外部系统的通道,即通过Provisioning Subsystem可以获取到其他系统中的身份信息。
该子系统使用的是ConnId框架。ConnId (Connectors for Identity Management)框架是Identity Connectors Framework (ICF)的延续,即简单的说通过它可以很方便的同步到其他系统的身份信息。
4)存储库子系统(Repository Subsystem)
顾名思义,该系统是存储IDM对象的,比如User, Account, Resource, Role等等,它接收其他子系统使用的XML数据对象,并将它们转换为适合于数据存储的任何格式。
5)基础设施子系统(Infrastructure Subsystem)
该子系统包含了日志、跟踪等等其他类似的组件,提供了一些系统使用到的一些组件和工具包。
上图中的橘黄色(颜色较深)的几个框在后续的代码结构中会有详细说明,在此不再介绍。
4、midpoint子系统调用关系
官网图如下:
这里写图片描述
各个子系统是通过spring framwork连接在一起的。
上图简化来说就是比如用户登陆,用户在GUI Subsystem输入用户名/密码后点击登陆,系统会在IDM Model Subsystem中完成密码的认证和该用户权限的获取,这些信息需要由Repository Subsystem提供,在IDM Model Subsystem中认证成功后,登陆系统,若用户查看自己的账号信息(该用户在其他业务系统中的账号),这时就需要用到Provisioning Subsystem去其他系统中抓取该用户的账号。
5、midpoint源码结构介绍
官网地址为:https://wiki.evolveum.com/display/midPoint/Source+Code+Structure

总目录 子目录 说明
gui/ GUI Subsystem
admin-gui/ 系统管理员界面
model/ IDM Model Subsystem
model-api/ IDM Model接口
model-impl/ Model Web Service Client,用户midpoint功能远程访问的独立库
model-client/ 系统管理员界面
model-common/ 模型子系统组件之间共享的公共函数库。包含更复杂的表达式、映射、函数库等
model-test/ model组建测试库
model-test/ model子系统集成测试
workflow-api/ 工作流组件接口
workflow-impl/ 基于Activiti BPM引擎的工作流实现
notifications-api/ 通知组件接口
notifications-impl/ 通知组件实现(邮件通知)
report-api/ 报表组件接口
report-impl/ 基于Jasper Reports报表组件实现
provisioning/ Provisioning Subsystem
provisioning-api/ Provisioning子系统接口
provisioning-impl/ Provisioning子系统实现
ucf-api 基于Jasper Reports报表组件实现
ucf-impl-connid ConnId框架的统一连接框架的实现
ucf-impl-builtin 如手动设置连接的内建连接的统一连接框架的实现
repo/ Repository Subsystem
repo-api/ 身份存储接口
repo-sql-impl/ 基于关系型数据库的身份存储接口实现
audit-api/ 认证接口
audit-impl/ 认证接口实现
task-api/ 任务管理接口
task-quartz-impl/ 基于Quartz库的任务管理接口实现
security-api 安全API
security-impl 安全API实现
repo-common 在repo、provisioning、model子系统的组件中使用的公共包。包含的类用于在provisioning中所需的基本表达式
infra/ Infrastructure Subsystem
common/ 普通的midpoint函数,可用于其他组件
prism/ Prism对象框架的实现
schema/ Data Model的实现
util/ 通用实用程序
icf-connectors/ 用于midpoint内部测试的假连接
tools/ 如JAXB插件、NG测试支持代码、misc脚本等的Misc开发和构建工具
dist/ midpoint分发包
samples/ 示例代码
build-system/ 构建系统的基本设置
testing/ 集成 、点到点测试
legal/ 法律事务(如复制和分发)

猜你喜欢

转载自blog.csdn.net/fengshuiyue/article/details/79818883