关于go-ldap-admin
# 为什么有这个项目
我曾经经历的公司强依赖 openLDAP 来作为企业内部员工管理的平台,并通过 openLDAP 进行各平台的认证打通工作。
但成也萧何败也萧何,给运维省力的同时,ldap 又是维护不够友好的。
# 原因一
在 godap (opens new window) 项目中,作者这样描述对 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.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
这个故事的简短版本是这样的:我讨厌LDAP。我以前喜欢它。但出于所有错误的原因,我喜欢它。许多不同的软件
支持LDAP作为身份验证解决方案。除了其法律上的标准地位外,其广泛的部署也巩固了它作为事实上的标准。
然而,仅仅因为它是一个标准并不意味着它是一个好主意。
我承认,鉴于其年龄,LDAP运行良好。我相信它的作者仔细考虑了如何构建协议,并选择了ASN.1及其具有所有良
好意义的编码。
问题是,在今天的互联网上,LDAP只是个麻烦。您无法从浏览器调用它。它不可读,也不容易调试。工具往往是神
秘而令人困惑的。这比大多数简单的身份验证用途所需的要复杂得多。(是的,我知道除了身份验证,还有许多其
他用途——但对那些人来说,这通常也太复杂了。)
可能由于协议的复杂性,似乎几乎没有易于使用的库来实现LDAP协议的服务器端,而LDAP协议没有与某些完整的目
录服务器系统绑定;当然也没有像Go那样容易“让它工作”的语言。
2
3
4
5
6
7
8
9
10
11
12
13
14
// Make sure to add code blocks to your code group
他说他对 ldap 又爱又恨,因为 ldap 出现的最早,许多的三方软件都兼容支持它,它成了这方面的一个标准。但问题在于,它对于维护者而言,又是复杂麻烦的。就算是有 Phpldapadmin 这样的平台能够在浏览器维护,但看到那样上古的界面,以及复杂的交互逻辑,仍旧能够把不少人劝退。
# 原因二
项目发布之后,有不少朋友慢慢开始了解到这个项目,还有一些是实际生产中遇到 ldap 管理相关的痛点,网上冲浪搜索过程中与这个项目相遇,他们加群之后,大多有如下言论:
- 发现这个项目完美契合了我现在的痛点和需求
- 你写了我正打算在公司写的项目
每当这个时候,苏芮《牵手》的歌词都会在我的脑海中荡漾:
因为爱著你的爱 因为梦著你的梦 所以悲伤著你的悲伤 幸福著你的幸福
因为路过你的路 因为苦过你的苦 所以快乐著你的快乐 追逐著你的追逐
因为誓言不敢听 因为承诺不敢信 所以放心著你的沉默 去说服明天的命运
没有风雨躲得过 没有坎坷不必走 所以安心的牵你的手 不去想该不该回头
也许牵了手的手 前生不一定好走 也许有了伴的路 今生还要更忙碌
所以牵了手的手 来生还要一起走 所以有了伴的路 没有岁月可回头
有人说,这是一首最能体现中文编排魅力的歌,名词做动词,动词做名词,灵活运用,且意味深长,堪称佳品。
是的,因为路过大家的路,苦过大家的苦,所以我才希望通过这个项目能创造出大家都懂的那种快乐。
鉴于如上原因,我开发了这个现代化的 openLDAP 管理后台。
# 这个项目是什么
go-ldap-admin 旨在为 openLDAP 服务端提供一个简单易用,清晰美观的现代化管理后台。
在完成针对 openLDAP 的管理能力之下,支持对钉钉,企业微信,飞书的集成,用户可以选择手动或者自动同步组织架构以及员工信息到平台中,让 go-ldap-admin 项目成为打通企业 IM 与企业内网应用之间的桥梁。
简图如下:
# 这个项目的将来
一开始我并没有设想过项目将来会是什么样的走向,现在项目还有很多不完善的地方,需要一点点将这些内容给弥补上。
那么远的就先不说了,至少当下短期的未来方向,应该是努力将项目打造成易于接入,易于维护,易于使用的生产可用项目。
到现在 2022 年 8 月,显然这个目标已经达到,且已有一部分同学已将此项目用于生产!
# 免责声明
go-ldap-admin 项目遵循 Apache 2.0 协议,请严格按照相关许可使用及开发。
由 go-ldap-admin 以及其他第三方二次开发所产生的一切后果,与项目作者本人无关!
请务必在进行充分测试体验后再进行生产使用。