go-ldap-admin现代化管理后台
go-ldap-admin 旨在为 openLDAP 服务端提供一个简单易用,清晰美观的现代化管理后台。
在完成针对openLDAP的管理能力之下,我们希望平台能够成为企业IM与应用之间的桥梁,亦即,对钉钉,企业微信,飞书的集成,用户可以选择手动或者自动同步组织架构以及员工信息到平台中,让go-ldap-admin项目成为打通企业IM与企业内网应用之间的桥梁。
官方文档:http://ldapdoc.eryajf.net
架构简图如下:
- 用户可以手动在go-ldap-admin平台上维护员工以及部门分组数据。
- 用户可以选择通过钉钉,飞书,企业微信自动将企业IM的组织架构以及员工信息同步到平台上。
- 平台上的数据呈现均来自于MySQL,如有数据添加或者修改,则会先操作MySQL,再操作openLDAP,平台将保障二者数据的一致性。
- 企业内网应用基于openLDAP进行认证,可以通过人员这个ou,也可以通过具体的某个分组,具体实践根据场景自行定制。
在线体验
提供在线体验地址如下:
分类 | 地址 | 用户名 | 密码 |
---|---|---|---|
go-ldap-admin | http://demo-go-ldap-admin.eryajf.net | admin | 123456 |
phpLdapAdmin | http://demo-go-ldap-admin.eryajf.net:8091/ | cn=admin,dc=eryajf,dc=net | 123456 |
在线环境可能不稳,如果遇到访问异常,或者数据错乱,请联系我进行修复。
代码托管
快速搭建
为什么有这个项目
我曾经经历的公司强依赖openLDAP来作为企业内部员工管理的平台,并通过openLDAP进行各平台的认证打通工作。
但成也萧何败也萧何,给运维省力的同时,ldap又是维护不够友好的。
在godap项目中,作者这样描述对ldap的感受:
The short version of the story goes like this: I hate LDAP. I used to love it. But I loved it for all the wrong reasons. LDAP is supported as an authentication solution by many different pieces of software. Aside from its de jure standard status, its wide deployment cements it as a de facto standard as well.
However, just because it is a standard doesn't mean it is a great idea.
I'll admit that given its age LDAP has had a good run. I'm sure its authors carefully considered how to construct the protocol and chose ASN.1 and its encoding with all of wellest of well meaning intentions.
The trouble is that with today's Internet, LDAP is just a pain in the ass. You can't call it from your browser. It's not human readable or easy to debug. Tooling is often arcane and confusing. It's way more complicated than what is needed for most simple authentication-only uses. (Yes, I know there are many other uses than authentication - but it's often too complicated for those too.)
Likely owing to the complexity of the protocol, there seems to be virtually no easy to use library to implement the server side of the LDAP protocol that isn't tied in with some complete directory server system; and certainly not in a language as easy to "make it work" as Go.
他说他对ldap又爱又恨,因为ldap出现的最早,许多的三方软件都兼容支持它,它成了这方面的一个标准。但问题在于,它对于维护者而言,又是复杂麻烦的。就算是有Phpldapadmin这样的平台能够在浏览器维护,但看到那样上古的界面,以及复杂的交互逻辑,仍旧能够把不少人劝退。
鉴于此,我开发了这个现代化的openLDAP管理后台。
基本概念
用户管理
提供用户员工层面基础信息的增删改查的维护。
默认情况下,我们提供的是类似如下dn的用户:
uid=zhangsan,ou=people,dc=eryajf,dc=net
这也是标准的用户维度管理信息的方式,看到网上也有同学将用户以cn的方式进行维护,此处并不苟同,因此也暂不会支持多维度。
分组管理
提供组织架构部门,分组等维度的增删改查的维护。部门属于分组内的一个维度,不再单独拆表实现。
目前部门支持如下两种dn:
ou=jenkins,dc=eryajf,dc=net
cn=prod-admin,ou=jenkins,dc=eryajf,dc=net
通常第一层级的ou来区分不同功能方向的分组,注意ou属性的分组下不能添加人员。
第二层级或者更深层级的分组,则建议统一使用cn表示,以便于组内成员的维护。
主要功能
功能介绍部分我将从基础功能与核心功能两方面来介绍。
基础功能
基础功能,包括如下能力:
- 接口管理:提供接口动态增删改查管理的能力。
- 菜单管理:提供菜单动态增删改查管理的能力。前端菜单通过后端接口返回进行渲染。
- 角色管理:基于Casbin的 RBAC 访问控制模型,实现用户与角色绑定的权限隔离。
- 操作日志:提供平台操作记录审计的能力。
核心功能
当下达到v0.1.0版本,主要核心功能如下:
- 用户管理
- 用户的增删改查
- 用户密码修改的两种方式
- 在个人中心通过原密码新密码进行重置
- 在首页忘记密码处通过邮箱由系统生成一个随机密码。
- 员工离职一键从平台禁用,并保留用户信息,如果二次入职公司,还可以一键将用户恢复。
- 分组管理
- 分组的增删改查
- 分组内成员的管理
- 同步管理
- 钉钉组织架构以及员工信息的同步能力
功能概览
登陆页
-
登录页背景图秉持go-ldap-admin项目定位,以一座抽象的高架桥梁作为背景。
-
注意红框中的忘记密码,此处是普通用户在忘记密码的情况下,可通过输入邮箱对密码进行重置,重置成功之后,系统会自动生成密码,并发送到用户邮箱。
- 部分公司的企业邮箱也是基于ldap进行认证的,那么这里可能会是个死循环,目前暂时不兼容考虑这种情况,后续如果这个场景的需求比较多,可以考虑再集成其他收信方式。
以上方式是用户忘记密码之后的自助修改密码方式,还有一种修改密码方式,是用户登录个人账号之后,在个人中心,通过输入原密码以及新密码进行密码重置。
首页
目前首页中红框部分内容仅作为占位,并无实际数据含义。