本文摘自php中文网,作者藏色散人,侵删。
下面由golang教程栏目给大家介绍Golang如何连接Ldap,希望对需要的朋友有所帮助!
今天在这里写一些Golang怎么连接ldap
golang的ldap包有一些,我使用的是
1 | go get -u "gopkg.in/ldap.v2"
|
我的ldap环境:
rootdn: uid=admin,dc=wjq,dc=com password: openldap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | dn: dc=wjq,dc=com
dc: wjq
objectClass: top
objectClass: domain
dn: ou=Group,dc=wjq,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
dn: ou=People,dc=wjq,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: uid=admin,dc=wjq,dc=com
uid: admin
objectClass: top
objectClass: account
|
一个组和一个用户:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #组信息
dn: cn=test,ou=Group,dc=wjq,dc=com
gidNumber: 1003
cn: test
objectClass: posixGroup
#用户信息
dn: uid=test,ou=People,dc=wjq,dc=com
uidNumber: 1009
gidNumber: 1003
gecos: test
homeDirectory: /home/test
uid: test
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
shadowInactive: -1
shadowExpire: -1
shadowFlag: -1
objectClass: posixAccount
objectClass: shadowAccount
objectClass: account
cn: test
userPassword:: e1NTSEF9d053TWhYRTR4STJUUmpJWm5MTkF4VFlBTFhJdStaZ0Q=
shadowLastChange: 17858
|
golang处理步骤如下:
1. ldap.Dail #这一步是底层的连接上
2. ldap.Bind #类似于用户名密码认证
3.操作 比如 查询,删除,增加用户
第一步: Dail
Dail有两个参数 network, address, 返回 (*Conn, error)
network: 是指网络协议 tcp, udp
address: 是底层要连接的地址,需要带端口号
1 | con, err := ldap.Dial( "tcp" , "127.0.0.1:389" )
|
第二步: 认证
Bind(rootdn, password) (error)
1 | berror := conn.Bind( "uid=admin,dc=wjq,dc=com" , "openldap" )
|
第三步: 操作;
操作很有特点,我觉得也许是golang语言的特点,比如
查询, ldap提供一个查询的结构体 -- ldap.NewSearchRequest, 只要我们把数据填充进去,然后调用ldap.Search
添加, ldap提供一个添加的结构体 -- ldap.NewAddRequest, 填充好数据, 然后调用 ldap.Add
删除, ldap提供删除结构体 -- ldap. NewDelRequest, 然后调用ldap.Del
用户密码修改, ldap提供修改用户密码的结构体 -- ldap.NewPasswordModifyRequest , 然后调用ldap.PasswordModify
这个非常有特点,来看看:
查询用户组NewSearchRequest:
1 2 3 4 5 6 7 8 | func NewSearchRequest(
BaseDN string,
Scope, DerefAliases, SizeLimit, TimeLimit int,
TypesOnly bool,
Filter string,
Attributes []string,
Controls []Control,
) *SearchRequest
|
BaseDN: 根据我的ldap环境应该是 ou=Group,dc=wjq,dc=com
阅读剩余部分
相关阅读 >>
golang如何退出进程?
rtmp协议视频平台easydss编译过程中go语言异步信息处理设计与实现
golang字符串重新编码
leetcode go
arts #5
手撸golang 基本数据结构与算法 冒泡排序
手撸golang 架构设计原则 依赖倒置原则
golang 架构设计原则 单一职责原则
用go实现进制之前的转化
关于golang gc 垃圾回收机制的详解
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » Golang如何连接Ldap