【免费下载链接】cmms
#1 Self hosted CMMS web & mobile application that allows you to manage enterprise maintenance for free - Computerized Maintenance Management System
Atlas CMMS是一款免费、自托管的 CMMS(计算机化维护管理系统)Web 与移动应用,用于管理企业级设备维护。如果你的公司已经有成熟的LDAP / Active Directory用户目录,逐个手动创建账号和邀请成员会非常低效。本篇指南手把手带你完成Atlas CMMS 接入 LDAP的全部配置:员工直接用域账号登录、首次登录自动建档、定时任务自动用户同步,并通过OU 角色映射自动分配权限——全程无需手工建号。
接入 LDAP 能解决哪些痛点
在制造业、物业、能源等行业,设备维护团队往往横跨多个部门,账号管理是常见的运维负担:
- 统一登录:员工直接复用域账号密码登录 Atlas CMMS,不用记第二套密码
- 自动建号:新入职员工首次用域账号登录即可自动创建账号,无需管理员逐人邀请
- 自动用户同步:内置 Quartz 定时任务,定期从 LDAP 同步用户的创建、更新与禁用
- 自动角色分配:按组织单元(OU)映射表自动分配工程师、财务、IT 等不同角色
LDAP 接入完成后,技术人员用域账号登录,直接进入需要处理的工单看板:
整个功能位于后端 Spring Security + Spring LDAP 技术栈中:LdapSecurityConfig.java 负责连接配置,LdapService.java 负责登录与同步逻辑,完整配置说明见 dev-docs/LDAP_SETUP.md。
工作原理:登录认证与同步流程
登录认证流程
- 用户在登录页输入域用户名和密码
- Atlas CMMS 使用配置的搜索基(
LDAP_USER_SEARCH_BASES)和过滤条件(LDAP_USER_SEARCH_FILTER)在 LDAP 中查找用户 - 校验成功后从 LDAP 拉取用户详细信息(邮箱、姓名等)
- 如果该用户尚不存在,系统自动创建账号(密码为随机值,仅能通过域账号登录)
- 从用户 DN 中提取 OU,按映射表自动分配角色
- 签发 JWT 会话令牌
💡 登录接口自带防暴力破解保护,见 AuthController.java 中的
bruteForceKey限流逻辑。
角色分配规则
- 从用户 DN 中提取所有
ou=...片段 - 依次在
LDAP_OU_ROLE_MAPPINGS中查找,第一个命中的 OU 决定角色 - 未命中任何映射时,使用默认角色
LIMITED_TECHNICIAN - 匹配不区分大小写
核心逻辑见 LdapService.java 的getRoleForOu()方法。
快速上手:先创建本地管理员(关键前置条件)
⚠️ 启用 LDAP之前,必须先在本地创建一个组织管理员(owner)账号,否则开启后组织将无人可管理。
- 以
LDAP_ENABLED=false启动 Atlas CMMS - 通过 UI 注册第一个账号,它将成为组织 owner
- 记下该账号的邮箱(如
admin@example.com) - 再切换到
LDAP_ENABLED=true,并将LDAP_ORG_ADMIN配置为第 3 步的邮箱
环境变量配置全解:必填项与默认值一览
所有 LDAP 配置均通过环境变量注入,定义在 application.yml。
必填变量
| 变量 | 说明 | 示例 |
|---|---|---|
LDAP_ENABLED | 启用 LDAP 认证 | true |
LDAP_ORG_ADMIN | 组织管理员邮箱(必须是前置步骤的本地 owner 账号) | admin@example.com |
LDAP_URL | LDAP 服务器地址 | ldap://localhost:389 |
LDAP_BASE_DN | 基础 DN | dc=atlas,dc=com |
LDAP_MANAGER_DN | 服务账号 DN(搜索模式用) | cn=admin,dc=atlas,dc=com |
LDAP_MANAGER_PASSWORD | 服务账号密码 | adminPassword |
LDAP_USER_SEARCH_BASES | 用户搜索的 OU,竖线分隔 | ou=engineering,ou=users\|ou=finance,ou=users |
LDAP_USER_SEARCH_FILTER | 用户搜索过滤条件,{0}为占位符 | (uid={0}) |
可选变量与默认值
| 变量 | 说明 | 默认值 |
|---|---|---|
LDAP_OU_ROLE_MAPPINGS | OU 到角色的映射 | (无) |
LDAP_SYNC_ENABLED | 启用定时用户同步 | true |
LDAP_SYNC_CREATE | 自动从 LDAP 创建新用户 | true |
LDAP_SYNC_UPDATE | 更新已有用户的详细信息 | true |
LDAP_SYNC_DISABLE | 禁用 LDAP 中已不存在的用户 | false |
LDAP_SYNC_CRON | 同步任务的 Cron 表达式 | 0 0 0,12 * * ? |
属性映射(适配非标准 LDAP 目录)
| 变量 | 说明 | 默认值 |
|---|---|---|
LDAP_ATTR_EMAIL | 邮箱属性 | mail |
LDAP_ATTR_FIRSTNAME | 名字属性 | givenName |
LDAP_ATTR_LASTNAME | 姓氏属性 | sn |
LDAP_ATTR_USERNAME | 用户名属性 | uid |
LDAP_OBJECT_CLASS | 用户对象类 | inetOrgPerson |
最小可用配置示例
LDAP_ENABLED=true LDAP_URL=ldap://ldap.example.com:389 LDAP_BASE_DN=dc=example,dc=com LDAP_MANAGER_DN=cn=svc_atlas,cn=users,dc=example,dc=com LDAP_MANAGER_PASSWORD=your-service-password LDAP_ORG_ADMIN=admin@example.com LDAP_USER_SEARCH_BASES=ou=engineering,ou=users|ou=finance,ou=users LDAP_USER_SEARCH_FILTER=(uid={0}) LDAP_OU_ROLE_MAPPINGS=Engineering=TECHNICIAN|Finance=REQUESTER|IT=ADMINOU 角色映射实战:让每个部门自动获得正确权限
LDAP_OU_ROLE_MAPPINGS的格式为OU名称=角色,多组映射用竖线|分隔。Atlas CMMS 提供六种角色:
| 角色 | 权限说明 |
|---|---|
ADMIN | 完整管理员权限 |
LIMITED_ADMIN | 受限管理员权限 |
TECHNICIAN | 可执行维护作业 |
LIMITED_TECHNICIAN | 受限技术员(未匹配用户的默认角色) |
REQUESTER | 仅可创建工单请求 |
VIEW_ONLY | 只读访问 |
例如让运维部门做技术员、财务只能提请求、IT 部门获得管理员权限:
LDAP_OU_ROLE_MAPPINGS=Operations=TECHNICIAN|Finance=REQUESTER|IT=ADMIN映射生效后,不同角色登录后看到的维护工作台各不相同:
自动用户同步详解:离职即禁用,入职即生效
当LDAP_SYNC_ENABLED=true(默认开启)时,系统会在启动时注册一个 Quartz 定时任务:
- 默认 Cron
0 0 0,12 * * ?:每天 0 点和 12 点各执行一次 - 启动即同步:应用启动完成后立即执行一次初始全量同步,见 LdapSyncJobScheduler.java
- 任务执行入口为 LdapSyncJob.java,具体同步逻辑在 LdapService.java 的
syncLdapUsers()方法
每次同步执行三类操作:
- 创建:LDAP 中存在而 Atlas CMMS 中没有的用户,自动建档(
LDAP_SYNC_CREATE控制) - 更新:同步邮箱、姓名等字段变更(
LDAP_SYNC_UPDATE控制) - 禁用:LDAP 中已删除的用户,禁用其在 Atlas 中的账号(
LDAP_SYNC_DISABLE控制,默认关闭)
⚠️ 同步只影响
ssoProvider=LDAP的账号,本地注册的账号完全不受影响,因此可以放心开启LDAP_SYNC_DISABLE=true实现"离职即禁用"。
生产环境安全部署清单
- 强制 TLS:生产环境务必使用
ldaps://加密传输 - 最小权限服务账号:为
LDAP_MANAGER_DN创建专用的只读 LDAP 账号,不要使用目录管理员 - 密码保密:
LDAP_MANAGER_PASSWORD放入 secrets manager 或通过环境变量注入,切勿写入代码库 - 验证同步:检查日志中出现
LDAP user sync completed successfully,即代表同步链路正常(LdapSyncJob.java)
三个最容易踩的配置坑
LDAP_ORG_ADMIN必须是前置步骤创建的本地 owner 邮箱:填成任意 LDAP 用户会导致组织无人可管理- OU 名称要与 DN 中的片段完全一致:用户 DN 为
uid=zhang,ou=engineering,ou=users,dc=atlas,dc=com时,映射表写Engineering=TECHNICIAN,而不是整条 DN {0}是占位符:搜索过滤条件写(uid={0}),不要直接写死某个用户名
更多细节与完整变量说明,可参阅官方文档 dev-docs/LDAP_SETUP.md,以及同步任务实现 api/src/main/java/com/grash/job/ 目录下的源码。
【免费下载链接】cmms
#1 Self hosted CMMS web & mobile application that allows you to manage enterprise maintenance for free - Computerized Maintenance Management System
相关推荐
Office 如何快速批量部署:LKY_OfficeTools 完整操作指南
Office 如何快速批量部署:LKY_OfficeTools 完整操作指南 LKY_OfficeTools 是一个 C 编写的 Windows 命令行工具,一
桌面应用从零配置Cloudreve与LDAP用户同步:自定义字段映射实战指南
从零配置Cloudreve与LDAP用户同步:自定义字段映射实战指南 你是否还在为企业内部多系统账号管理而烦恼?当Cloudreve遇到LDAP(轻量级目录访问
后端对象存储存储OpenMetadata LDAP SSO 客户端配置完全指南:从连接参数、角色映射到 SSL 信任库
OpenMetadata LDAP SSO 客户端配置完全指南:从连接参数、角色映射到 SSL 信任库 OpenMetadata 作为数据与 AI 的 Open
后端数据治理数据目录知识图谱数据血缘AI 应用MCP 服务前端数据质检
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考