0x0 前言
最近在用go语言连接LDAP做用户验证登录时,发现网上关于使用go获取LDAP的BaseDN的文章比较少,遇到问题自己到处找了好多天才最终解决,主要所以写下这篇文章,希望能对其他人有些许借鉴吧~
本文所使用的go库为github.com/go-ldap/ldap,ldap为open ldap。
0x1 获取BaseDN
BaseDN是LDAP进行检索的根路径,检索将会在这儿开始,一般来说一个LDAP可能只会有一个BaseDN,但是在实际中,我们仍有获取LDAP BaseDN的需求。获取BaseDN不需要管理员账户密码。
addr := fmt.Sprintf("%s:%s", config.Address, config.Port)
//addr:127.0.0.1:389
conn, err := ldap.Dial("tcp", addr)
if err != nil {
fmt.Printf("GetBaseDN error:%v\n", err)
return
}
defer conn.Close()
//获取basedn
search := ldap.NewSearchRequest("", ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false, "(objectClass=*)", []string{"namingContexts"}, nil)
sr, err := conn.Search(search)
if err != nil {
fmt.Printf("GetBaseDN error:%v\n", err)
return
}
var resp []*model.BaeDNMo