Golang 使用 LDAP 获取 AD 账号的隶属组
在 Go 语言中获取 Active Directory (AD) 账号的隶属组,可以使用 'github.com/go-ldap/ldap' 包进行操作。以下是一个示例代码:
package main
import (
"fmt"
"log"
"gopkg.in/ldap.v3"
)
func main() {
// AD服务器地址和端口
server := "ldap.example.com"
port := 389
// AD账号和密码
bindDN := "CN=Administrator,CN=Users,DC=example,DC=com"
bindPassword := "password"
// 连接AD服务器
conn, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", server, port))
if err != nil {
log.Fatal(err)
}
defer conn.Close()
// 绑定AD账号
err = conn.Bind(bindDN, bindPassword)
if err != nil {
log.Fatal(err)
}
// 查询用户的隶属组信息
searchRequest := ldap.NewSearchRequest(
"CN=John Doe,CN=Users,DC=example,DC=com", // 用户的DN
lldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
"(objectClass=*)", // 查询条件
[]string{"memberOf"}, // 返回的属性
nil,
)
sr, err := conn.Search(searchRequest)
if err != nil {
log.Fatal(err)
}
// 获取用户的隶属组
for _, entry := range sr.Entries {
for _, attr := range entry.Attributes {
if attr.Name == "memberOf" {
for _, value := range attr.Values {
fmt.Println(value)
}
}
}
}
}
在上面的示例代码中,通过使用 'ldap.Dial' 函数连接 AD 服务器,然后使用 'conn.Bind' 函数绑定 AD 账号。接下来,使用 'ldap.NewSearchRequest' 构建一个查询请求,指定用户的 DN、查询条件和返回的属性。然后使用 'conn.Search' 发送查询请求,并使用 'entry.Attributes' 获取返回的属性值。最后,使用 'attr.Values' 获取用户的隶属组信息。
需要注意的是,上述示例代码中使用了 'gopkg.in/ldap.v3' 包,你需要先安装此包,可以使用以下命令进行安装:
go get -u gopkg.in/ldap.v3
另外,示例代码中的 AD 服务器地址、端口、账号、密码、用户的 DN、查询条件等需要根据实际情况进行修改。
原文地址: https://www.cveoy.top/t/topic/o6a9 著作权归作者所有。请勿转载和采集!