我想检查给定objectGUID的密码

时间:2018-02-09 17:45:29

标签: go ldap

我想编写一个在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转换为所需的格式。

1 个答案:

答案 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函数供您玩。

希望这可以解决您的问题。