goalng 如何获取 ldap 服务器的数据?

我们工作在和其他组织配合时,我们可能不是作为服务器搭建的一方,而是属于客户端的一方,需要去获取服务器的组织结构,按照某些条件去获取服务器的数据,也可以是同步组织结构

虽然说 golang 的数据结构没有 c++ 那么丰富,不过对于这个 ldap 还是有相应的库来进行处理的

官方文档地址:https://pkg.go.dev/gopkg.in/ldap.v3

我们也可以下载 github 上面的这个库

go get github.com/go-ldap/ldap/v3

golang 对于 ldap 库最新的版本是 Version: v3.1.0

开始编码

我们来写一个 demo ,获取我们上次搭建的 ldap 服务器上的组织结构

这是我们简单搭建的 ldap 服务器,可以使用 LDAP Admin 可视化管理工具来查看具体的页面效果

我们把这个库下载下来后,我们的编码思路如下:

  • 填写 ldap 服务器地址以及填写相应的管理员信息,与 ldap 服务器建立连接
  • 编写查询请求,并开始向 ldap 服务器进行查询
  • 将查询结构,按照 ldap v3 库提供的方式 打印出效果来

连接 服务器

我们可以使用 func DialURL(addr string, opts ...DialOpt) (*Conn, error) 函数来与 ldap 服务器建立连接

ml, err := ldap.DialURL("ldap://xxxx")
	if err != nil {
   
		log.Fatal(err)
	}
	defer ml.Close()

我们填入的地址中,可以不用输入端口号,库函数已经有给我们做好处理,我们可以来看看源码

DialURL 函数用于连接 ldap 服务器,连接成功会给我们返回一个新的连接

我们可以继续看一下这个函数调用 c, err := dc.dial(u)

golang 的库会根据我们填写的地址是 ldap 还是 ldaps 来判断是做加密传输还是不加密传输,与之对应的就是访问不加密的用 389 端口加密的就使用 636 端口

添加管理员绑定信息

我们添加的 ldap 域信息为:dc=xiaomotong,dc=com

我的管理员是:cn=admin,dc=xiaomotong,dc=com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值