如何使用Go与LDAP协议

时间:2013-03-04 15:50:25

标签: ldap go

如何直接使用Go来调用和管理 Ldap 协议?有包裹吗?或者我必须使用udp和tcp吗?

6 个答案:

答案 0 :(得分:18)

Go标准库中没有LDAP库,但快速Google搜索会显示您可以尝试的几个:

第二个实际上是第一个的分支。在github上,您始终可以查看未解决的问题,上次更新和分叉网络(https://github.com/mmitton/ldap/network),以便在需要大量分析时很好地了解应该使用哪个库。

如果你需要一个库来获取Go标准库中省略的东西,那么有几个好的地方可以看:

如果所有这些都让您失败并且您不想创建自己的实现,请记住,您始终可以使用cgo来调用C代码(例如,许多C LDAP库之一)来自Go。

答案 1 :(得分:11)

以为我应该在这里加上我的十美分。这是一个老帖子,但在这里它仍然是

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

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

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

即使使用转义过滤器,MMitton library刚回来时出现了过滤器编译错误。加载了Mavricknz lib并且它有效。甚至还带有EscapeFilter功能!辉煌!

无论如何......我想我应该为那些和我一样奋斗的人发布这个:)

答案 2 :(得分:3)

我开始编写一个帮助程序库,用于构建能够说出LDAP协议的服务器软件。 包括一些使用样本。

答案 3 :(得分:2)

另外,对于它的服务器端,我不久前写了这个包(在Go中): https://github.com/bradleypeabody/godap

它不是一个完整的LDAP服务器,但适用于在另一个数据源之上实现身份验证(我无法找到任何其他解决的项目)。

它做了很多"直接管理Ldap协议" :)

答案 4 :(得分:2)

对于简单的高级ldap客户端,请参阅go-ldap-clientgo docs

https://godoc.org/?q=ldap上的大多数选项 只是另一个的叉子,大多数是太低或太有限(例如不返回错误 这使得很难排除问题。)

答案 5 :(得分:1)

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

它在github - sona-tar/go-ldapc