如何使用Go语言与LDAP协议?

23

我如何使用Go直接调用和管理LDAP协议?有哪些包可用?或者必须使用UDP和TCP?


9
你有搜索过吗?https://github.com/tonnerre/go-ldap 是谷歌搜索结果的最佳选项。 - CharlesB
3
我推荐使用godoc.org来搜索库。http://godoc.org/?q=ldap - lukad
为了提供一些极简服务器支持,我创建了这个:https://github.com/bradleypeabody/godap - Brad Peabody
6
@CharlesB实际上,这个线程确实是最顶部的搜索结果(https://www.google.com/search?q=golang%20ldap)。 - Vytis Valentinavičius
6个回答

18

Go标准库中没有LDAP库,但是快速的谷歌搜索可以找到几个可用的库:

第二个其实是第一个的分支。在Github上,您可以查看开放问题、最后更新和分叉网络(https://github.com/mmitton/ldap/network)来了解哪个库应该在分叉很多时使用。

如果您需要用于Go标准库中省略的某些库,有几个好的地方供您查找:

如果所有这些都不起作用,您又不想自己创建实现,那么请记住,您总是可以使用cgo来从Go调用C代码(例如其中许多C LDAP库)。


7
请参考 https://github.com/go-ldap/ldap,上述项目已过期且不再维护。 - xiaoyi

11

我想在这里补充一下我的看法。尽管这是一篇旧帖子,但仍然可以参考。

在voidlogic上面提到使用mmitton/ldap之后,我使用了https://github.com/mavricknz/ldap库。 mmitton库的问题在于它在筛选器中不能很好地处理转义字符。

The test filter: (&(objectClass=user)(cn=wickd(bracketTest )))

Escaped Filter:  (&(objectClass=user)(cn=wickd\28bracketTest \29))

MMitton库即使使用了转义过的过滤器,也刚刚遇到了编译错误。加载Mavricknz库后问题得以解决。甚至还包含EscapeFilter函数!太棒了!

无论如何...我想为遇到与我相同困扰的人发布这篇文章 :)


3

2

如果需要一个简单的高级LDAP客户端,请参考go-ldap-clientgo文档

https://godoc.org/?q=ldap上的大多数选项只是另一个选项的分支,它们中的大部分要么太低级,要么太有限(例如不返回错误,这使得难以排除问题)。


2
此外,关于服务器端,我有一段时间前写了一个Go语言包:https://github.com/bradleypeabody/godap。虽然它不是一个完整的LDAP服务器,但很适合在其他数据源之上实现身份验证(这是我无法找到其他项目解决的问题)。它直接管理LDAP协议。 :)

看起来很酷!我会看看的,一直在找这样的东西。 - wickd

1
如果您想在网页上提供基于LDAP的身份验证,您可能会喜欢我创建的解决方案:go-ldapc是一个LDAP认证客户端模块,只有一个API。
它位于github - sona-tar/go-ldapc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接