2010-10-19 15 views
0

Je suis en train de récupérer tous les utilisateurs et leurs groupes associés d'une Active Directory serveur, en utilisant une requête LDAP . Apparemment, Active Directory ne me donne pas le groupe principal des utilisateurs. Par exemple, cette recherche:LDAP: Comment obtenir tous les utilisateurs et les groupes d'Active Directory

(objectclass=user) 

produit ce résultat:

# Test User, Users, sub.domain.net 
dn: CN=Test User,CN=Users,DC=sub,DC=domain,DC=net 
.... 
memberOf: CN=Domain Admins,CN=Users,DC=sub,DC=domain,DC=net 
memberOf: CN=Administrators,CN=Builtin,DC=sub,DC=domain,DC=net 
.... 
primaryGroupID: 515 
.... 

Le groupe principal pour cet utilisateur est test Groupe (je le sais parce que j'ai créé cette paire utilisateur/groupe) alors allons jetez un oeil à celui-là:

# Test Group, Users, sub.domain.net 
dn: CN=Test Group,CN=Users,DC=sub,DC=domain,DC=net 
objectClass: top 
objectClass: group 
cn: Test Group 
distinguishedName: CN=Test Group,CN=Users,DC=sub,DC=domain,DC=net 
instanceType: 4 
whenCreated: 20101014151945.0Z 
whenChanged: 20101015141656.0Z 
uSNCreated: 41007 
uSNChanged: 41133 
name: Test Group 
objectGUID:: aQH58S0MWU2Fu/Cli72u0A== 
objectSid:: AQUAAAAAAAUVAAAAIzgCYuz3AhjZk27UXgQAAA== 
sAMAccountName: Test Group 
sAMAccountType: 268435456 
groupType: -2147483646 
objectCategory: CN=Group,CN=Schema,CN=Configuration,DC=sub,DC=domain,DC=net 
dSCorePropagationData: 16010101000000.0Z 

Comment suis-je supposé associer les utilisateurs avec leurs groupes primaires? Tout ce que je reçois lorsque je liste les propriétés d'un utilisateur est une propriété primaryGroupID, mais sa valeur est nulle part dans la base de données LDAP entière (objectclass=*).

+0

Comment accédez-vous/lisez-vous à Active Directory? Quelle programmation ou langage de script utilisez-vous? Beaucoup de ces choses sont très spécifiques à votre environnement de développement ..... –

+0

@marc_s J'utilise PHP et les exemples donnés ci-dessus proviennent de la sortie de ldapsearch – Tom

+0

@Tom: ok, merci - je ne suis pas un expert PHP, et tout mon code que j'aurais à portée de main serait .NET (C#) - donc je crains de ne pas pouvoir vraiment vous aider ici ... –

Répondre

1

Il est la mauvaise langue, mais KB article parle spécifiquement sur l'utilisation de l'attribut primarygroupID pour trouver le SID pour le groupe primaire:

How to use the PrimaryGroupID attribute to find the primary group for a user

Vous pouvez être en mesure d'utiliser comme point de départ votre propre code.

+0

J'ai trouvé un code similaire dans ruby: http://www.boost.co.nz/blog/ruby-on-rails/extracting-active-directory-sids-with-ruby/ – Tom

0

Ce (vbscript) par exemple sur la façon de définir un groupe d'utilisateurs primaire peut vous donner une conclusion:

oGroup.GetInfoEx Array("primaryGroupToken"), 0 
oUser.PrimaryGroupID = oGroup.PrimaryGroupToken 
oUser.SetInfo 

Comme vous le voyez, vous devez correspondre à la propriété PrimaryGroupID de l'utilisateur à la propriété PrimaryGroupToken du group (& (objectclass = group) (PrimaryGroupToken = UsersPrimaryGroupID)) ou similaire.

+2

Malheureusement, le PrimaryGroupToken est un attribut construit - calculé par le fournisseur ADSI et non récupérable via LDAP. –

+1

Merci d'avoir essayé @Silvan, mais @Damien_The_Unbeliever a raison. Ce champ est calculé sur le client par une bibliothèque MS connerie. – Tom

Questions connexes