implement generic method to find AD objects

dev
5amu 2024-01-21 16:55:17 +01:00
parent 893129eb17
commit 89d30d94d6
1 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,55 @@
package ldap
import (
"fmt"
"github.com/go-ldap/ldap/v3"
)
type ADObject struct {
DistinguishedName string
SAMAccountName string
PWDLastSet string
LastLogon string
MemberOf []string
ServicePrincipalName []string
}
func (c *LdapClient) FindADObjects(filter string) ([]ADObject, error) {
sr := ldap.NewSearchRequest(
c.BaseDN, ldap.ScopeWholeSubtree,
ldap.NeverDerefAliases, 0, 0, false,
filter,
[]string{
"distinguishedName",
"sAMAccountName",
"pwdLastSet",
"lastLogon",
"memberOf",
"servicePrincipalName",
},
nil,
)
res, err := c.Conn.Search(sr)
if err != nil {
return nil, err
}
if len(res.Entries) == 0 {
return nil, fmt.Errorf("no object returned from query")
}
var objects []ADObject
for _, obj := range res.Entries {
objects = append(objects, ADObject{
DistinguishedName: obj.GetAttributeValue("distinguishedName"),
SAMAccountName: obj.GetAttributeValue("sAMAccountName"),
PWDLastSet: obj.GetAttributeValue("pwdLastSet"),
LastLogon: obj.GetAttributeValue("lastLogon"),
MemberOf: obj.GetAttributeValues("memberOf"),
ServicePrincipalName: obj.GetAttributeValues("servicePrincipalName"),
})
}
return objects, nil
}