我想编写一个在GoLang中使用objectGuid搜索ldap用户的函数 我使用ldap作为“gopkg.in/ldap.v2”来连接ldap主机。
l,_ :=ldap.Dial("tcp", fmt.Sprintf("%s:%d", host, 389))
defer l.Close()
l.Bind(adminuser, adminpass);
searchRequest := ldap.NewSearchRequest(
"dc="+strings.Join(strings.Split(domain,"."),",dc="),
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0,
0,false,
"(&(objectclass=person)(objectGUID=???SpecialFormat???))",
[]string{"dn"},
nil,
)
sr, err := l.Search(searchRequest);
if err!=nil {
log.Printf("Error %s",err);
}
userdn := sr.Entries[0].DN; // I need UserDN for checking
err=l.Bind(userdn, string(pass)) //checking password
我的代码是这样的。
我想搜索有“445a1532-08aa-4a10-8a9c-d7f10f574afe”等GUID的人。
但我想,“ldapsearch请求”需要一个不同的objectGUID格式
如何将我的GUIDString转换为所需的格式。
答案 0 :(得分:0)
据我所知,对象GUID必须以称为Octet String的其他格式传递给LDAP过滤器。
格式只是将对象Guid中包含的十六进制值分割为字节(请记住,一个字节包含两个十六进制数字)。
示例:"b0ae470c-16bc-4019-b455-8c96ec515f55"
- > "\0c\47\ae\b0\bc\16\19\40\b4\55\8c\96\ec\51\5f\55"
我在Go Playground中创建了一个简单的golang函数供您玩。
希望这可以解决您的问题。