scope: 我理解的是查询的范围,ldap是一个目录树,我一般设置 ldap.ScopeWholeSubtree
DerefAiases: 在搜索中别名(cn, ou)是否废弃,设置: ldap.NeverDerefAliases
SizeLimit: 大小设置,一般设置为0
TimeLimit: 时间设置,一般设置为0
TypesOnly: 设置false(好像返回的值要多一点)
Controls: 是控制我没怎么用过,一般设置nil
这些我也没理解透详细可以参考: https://tools.ietf.org/html/rfc4511
查询中主要的两个参数 Filter, Attributes
Filter 是过滤条件
Attributes 返回的属性值
建立SearchRequest结构体:
1 2 3 4 5 6 7 8 9 |
|
Filter: (&objectClass=posixGroup)) 查找所有group,返回每个组的dn, cn, uid
过滤test用户组: (&(objectClass=posixGroup)(cn=test))
过滤用户cn=test,或者uid=test(当然baseDn是用户的): "(|(&(objectClass=posixAccount)(cn=test))(&(objectClass=posixAccount)(uid=test)))"
执行Search并且获取结果(在cur.Entries中):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
以上就是Search的步骤。
在来看看添加用户: NewAddRequest
添加
用户: wujq
password: 123456
家目录: /home/wujq
所属的组: test (id=1003)
1. 首先确认我需要添加的用户dn: uid=wujq,ou=People,dc=wjq,dc=com
2. gidNumber 是 1003
3. 因为需要uidNumber值,假设我设置为1010(系统没有使用)
执行代码如下:
1 2 3 4 5 6 7 8 9 |
|
以上就是Golang如何连接Ldap的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
更多相关阅读请进入《golang》频道 >>
Go语言101
一个与时俱进的Go编程知识库。