如何使用 Go 直接调用和管理Ldap协议?有包吗?还是我必须使用 udp 和 tcp?
6 回答
There is no LDAP library in the Go standard libraries, but a quick Google search reveals several you could try:
This second one is actually a fork of the first one. On github you can always view the open issues, last update and forking network (https://github.com/mmitton/ldap/network) to get a pretty good sense of which library you should use when there is a lot of forking.
If you need a library for something omitted in the Go standard libraries there are several good places to look:
- Always start with a quick Google search
- Checkout: http://go-lang.cat-v.org/pure-go-libs / http://go-lang.cat-v.org/library-bindings
- And: http://godoc.org/
- And: http://code.google.com/p/go-wiki/wiki/Projects
If all of those fail you and you don't feel up to creating your own implementation, keep in mind you can always use cgo to call C code (such as one of the many C LDAP libraries for example) from Go.
我想我应该在这里加上我的十美分。这是一个旧帖子,但仍然在这里
在使用上面 voidlogic 提到的库之后,我使用了https://github.com/mavricknz/ldap库。mmitton/ldap
mmitton lib 的问题在于它在过滤器中不能很好地处理转义字符。
The test filter: (&(objectClass=user)(cn=wickd(bracketTest )))
Escaped Filter: (&(objectClass=user)(cn=wickd\28bracketTest \29))
即使使用转义过滤器,MMitton library
刚刚返回过滤器编译错误。加载了 Mavricknz 库,它工作了。甚至自带EscapeFilter功能!光彩!
无论如何......我想我应该为那些和我有同样挣扎的人发布这个:)
我开始编写一个帮助程序库来构建能够使用 LDAP 协议的服务器软件。包括一些使用示例。
此外,对于它的服务器端,我不久前写了这个包(在 Go 中): https ://github.com/bradleypeabody/godap
它不是一个完整的 LDAP 服务器,但可以很好地在另一个数据源之上实现身份验证(我无法找到任何其他解决的项目)。
它做了很多“直接管理 Ldap 协议”:)
有关简单的高级 ldap 客户端,请参阅go-ldap-client、go docs。
https://godoc.org/?q=ldap上的大多数选项 只是另一个选项的分支,它们中的大多数都太低级或太有限(例如,不返回导致问题难以解决的错误)。
如果您想在您的网页上提供基于 LDAP 的身份验证,您可能会喜欢我创建的解决方案:go-ldapc
是一个 LDAP 身份验证客户端模块,只有一个 API。