在 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、查询条件等需要根据实际情况进行修改。

Golang 使用 LDAP 获取 AD 账号的隶属组

原文地址: https://www.cveoy.top/t/topic/o6a9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录