在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言这是一个轮子。 作为一个在高校里混的 IT,LDAP 我们其实都蛮熟悉的,因为在高校中使用 LDAP 来做统一认证还蛮普遍的。对于 LDAP 的管理员而言,LDAP 的各种操作自然有产品对应的管理工具来处理,但对于需要集成 LDAP 的用户而言,我们经常需要做一些 LDAP 的测试来作为集成时的对比验证,脑补以下场景:
另外,高校间协作共享会比较多一些,例如通过一些联邦式的认证联盟来让联盟内的成员互相信任身份认证的结果,从而支持一些跨校协作的应用。在国外应用的比较多的是基于 Shibboleth 的联盟。国内在上海有一个基于相同技术框架的联盟,称之为上海市教育认证联盟。
我校作为上海联盟的主要技术支持方,我经常得和各个学校的 LDAP 打交道。远程支持当然只有 ssh 了。此时要测试 LDAP,LdapBrowser 之类的工具在纯 CLI 环境下没法用,openldap 的 client 又显得过于麻烦,所以就造个轮子咯。 需求这个轮子需求大概是这个样子
用 Go 操作 LDAP我们可以用 https://github.com/go-ldap/ldap 这个库来操作 LDAP 我们拿其中 userAuthentication 的 example 来举个例子,下为 example 中的示例代码,我增加了若干注释说明
总结:
命令行作为一个 cli 工具,命令行部分的设计是很重要的。考虑我们所需要实现的功能
比如可以按这个方式进行罗列
cobra 用起来容易上手,我同样贴一段他的 example 代码来加以注释来说明
实际生产环境中,我们可以每个命令的相关代码单独放在一个 .go 文件中,这样看起来会比较清晰一些。像这样
### API 基于 beego ,我们提供以下 API,把命令行支持的功能都搬过来。
轮子那么这个轮子已经造好了。ldao-test-tool 代码结构
编译
release可以直接下载编译好的 release 版本 提供 win64 和 linux64 两个平台的可执行文件 https://github.com/shanghai-edu/ldap-test-tool/releases/ 配置文件默认配置文件为目录下的 openldap 配置示例
AD 配置示例
命令体系命令行部分使用 cobra 框架,可以使用
认证
单用户测试命令行说明
示例
批量测试命令行说明
示例
用户名和密码以逗号分隔(csv风格)
查询
单用户查询命令行说明
示例
PS: 如果属性有多值,将以 LDAP Filter 查询
示例
批量查询测试命令行说明
示例
searchuser.txt 中有三个用户,其中 nofounduser 是不存在的用户
当使用
HTTP APIHTTP API 部分使用 beego 框架
健康状态检测 ldap 健康状态
查询用户查询单个用户信息
Filter 查询根据 LDAP Filter 查询
多用户查询同时查询多个用户,以
curl 示例
认证单用户认证单个用户认证测试,以
curl 示例
多用户认证同时发起多个用户认证测试,以
curl 示例
参考文档LDAP WiKi 以上转载授权 |
请发表评论