用 Go 写一个轻量级的 ldap 测试工具
时间: 2023-10-09 16:11:15 浏览: 72
好的,下面是一个使用Go语言编写的轻量级LDAP测试工具的示例代码:
```go
package main
import (
"fmt"
"gopkg.in/ldap.v3"
"log"
)
const (
ldapServer = "ldap://your-ldap-server.com:389"
bindDN = "cn=admin,dc=example,dc=com"
bindPassword = "admin-password"
)
func main() {
// 连接LDAP服务器
l, err := ldap.Dial("tcp", ldapServer)
if err != nil {
log.Fatalf("Failed to connect to LDAP server: %s", err)
}
defer l.Close()
// 绑定管理员账号
err = l.Bind(bindDN, bindPassword)
if err != nil {
log.Fatalf("Failed to bind to LDAP server: %s", err)
}
// 查询用户信息
searchRequest := ldap.NewSearchRequest(
"dc=example,dc=com",
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
"(uid=john)",
[]string{"cn", "mail"},
nil,
)
sr, err := l.Search(searchRequest)
if err != nil {
log.Fatalf("Failed to search LDAP server: %s", err)
}
// 输出查询结果
for _, entry := range sr.Entries {
fmt.Printf("DN: %s\n", entry.DN)
for _, attr := range entry.Attributes {
fmt.Printf("%s: %v\n", attr.Name, attr.Values)
}
}
}
```
以上代码会连接到LDAP服务器,使用管理员账号进行绑定,然后查询指定用户的信息并输出查询结果。您需要将常量`ldapServer`、`bindDN`和`bindPassword`替换为您自己LDAP服务器的地址、管理员账号和密码。同时,还需要根据您的LDAP服务器的配置修改`NewSearchRequest`方法中的搜索条件。