Apache Syncope

1.介绍

Apache Syncope 是一款由 JAVA EE 开发的开源的适用于企业的数字身份管理系统。
Identity Management是指使用业务流和信息技术管理系统和应用内的用户数据。通过整合用户属性、角色、资源和权限以解决哪位用户为了什么目的、通过什么方式在什么时间访问什么资源。

1.1.身份管理的定义

账户 由计算机处理的有关人的信息的记录。创建和管理账户的的系统会使用账户中存储的的技术信息。
数字身份 一个数字对象对自己提出的一系列声明的表示。
身份的生命周期:
在这里插入图片描述

除了用户和群组,Syncope也支持自定义的对象:工作站、打印机、文件夹、传感器、服务等。这使得Syncope可用于物联网。

1.2.身份和授权管理——使用场景

在这里插入图片描述
上图展示了完整的IAM方案中需要的技术:

  • Identity Store: 存储账户数据的仓库。关系型数据库、LDAP、活动目录等
  • Provisioning Engine: 在identity store和各种账户数据格式、模型、使用场景和用途中同步信息
  • Access Manager: 系统内所有应用的访问中间件,重要作用于应用前端,负责身份验证(单点登录)、授权(OAuth、XACML)和联合(SAML、OpenID Connect)。

1.2.1.单纯的身份存储不足以满足以下场景:

  • 系统异构
  • 缺少统一的信息源
  • 有些应用需要自己的用户数据库
  • 基础架构策略不同
  • 缺少工作流管理
  • 随着组织发展,潜在的基础管理成本增加

1.3.架构总揽

在这里插入图片描述
Admin UI: 是基于web的配置与管理控制台。
End-user UI: 是基于web的注册,管理和密码重置平台。
CLI: 是和Syncope交互的命令行工具,主要由系统管理员使用。
Core: Syncope的核心组件,提供ApacheSuccope所有服务。
Syncope同时提供了符合JAX-RS 2.0 RESTful接口用于第三方应用。

  • Logic: 实现可以通过REST服务触发的整体业务逻辑,并控制一些附加特性(通知、报告和审计)
  • Provisioning: 参与管理用户、组和任何对象的内部(通过工作流)和外部(通过特定连接器)表示。这个组建的功能通常需要一定的定制开发以满足特定的部署需要。因为它是定义和加强内部和外部数据之间的一致性和转换的关键决策点。
  • Workflow: 每个部署都可以从提供的列表中选择首选引擎(包括一个基于可流动的、参考的开源BPMN2.0实现的引擎),或者定义新的、自定义的引擎。
  • Persistence: 使用JPA2.2管理所有的数据。数据被持久化到一个底层数据库中,称为内部存储。通过Spring框架提供的全面事务管理来确保一致性。通常可以拓展到100万个实力,同时在不修改代码的情况下迁移到不同的数据库。
  • Security: 定义可授予管理员的细粒度授权集,从而实现委托管理场景。
    通过利用REST接口,第三方应用程序可以通过Java客户端(管理UI、最终用户UI和CLI的基础)或纯HTTP调用来完全访问IdM服务。

在生产环境中部署Syncope之前,需要修改security.properties文件中的一些默认值:

  • adminPassword: 明文密码的SHA1哈希计算,默认值为“password”。
  • secretKey: 用于AES加密的密钥值。仅在以下情况需要:
    1.adminPasswordAlgorithm设置为AES
    2.配置参数中的password.cipher.algorithm修改为AES
  • anonymousKey: 匿名请求使用的键值
  • jwsKey: 用于对访问令牌进行签名的对称签名密钥。

猜你喜欢

转载自blog.csdn.net/JosephThatwho/article/details/111878569