drkj41932 2018-02-09 17:45
浏览 132
已采纳

我想检查给定objectGUID的密码

I want to write a function that searchs a ldap user with objectGuid in GoLang.
I am using ldap as "gopkg.in/ldap.v2" for connecting ldap host.

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

My Code is like this.
I want to search a person that have a GUID like "445a1532-08aa-4a10-8a9c-d7f10f574afe".
But i guess, "The ldapsearch request" wants a different format for objectGUID.
How can i convert my GUIDString to needed format.

  • 写回答

1条回答 默认 最新

  • 普通网友 2018-02-16 11:55
    关注

    As far as I know object GUID must be passed to LDAP filters in a different format called Octet String.

    The format is simply a mangling of the hexadecimal values contained in the object Guid split as bytes (remember that a byte contains two hex digits).

    Example : "b0ae470c-16bc-4019-b455-8c96ec515f55" -> "\0c\47\ae\b0\bc\16\19\40\b4\55\8c\96\ec\51\5f\55"

    I've created a simple golang function in the Go Playground for you to play with.

    Hope this resolves your issue.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码