J'ai du code qui utilise DirectoryEntry
pour manipuler l'Active Directory local via LDAP. À l'heure actuelle, je trouve un OU
spécifique, ajoutez un utilisateur à elle, mettre à jour les propriétés de l'utilisateur, puis valider toutes les modifications:LDAP: comment ajouter un nouvel utilisateur à un groupe à l'intérieur d'une unité d'organisation
DirectoryEntry ldapRoot = new DirectoryEntry(ldapString, user, password);
DirectoryEntry userGroup = ldapRoot.Children.Find("OU=OUGroup");
DirectoryEntry newUser = userGroup.Children.Add("CN=" + userName, "user");
newUser.Properties["displayName"].Value = displayName;
...
newUser.CommitChanges();
userGroup.Close();
ldapRoot.Close();
LDAPString est quelque chose de semblable à LDAP:\\DC=company,DC=local
, au fond, il est juste aller chercher l'entrée racine.
Je change plusieurs propriétés, mais tout fonctionne bien. Cependant, j'ai un autre OU
appelé SharePoint_Groups, qui a un groupe à l'intérieur appelé Internal
. Je veux ajouter le nouvel utilisateur en tant que membre de ce groupe, mais je ne sais pas comment le faire. J'ai essayé les éléments suivants:
DirectoryEntry spGroup = ldapRoot.Children.Find("OU=Sharepoint_Groups");
DirectoryEntry internal = spGroup.Children.Find("CN=Internal");
Il ne fonctionne pas et je ne sais pas comment je dois répondre Internal
- est CN = correct ou devrais-je utiliser une autre spécification?
Et, une fois que j'ai le bon groupe, comment y ajouter l'utilisateur existant?
Merci à l'avance
Fonctionne parfaitement, semble-t-il que l'erreur s'est produite en faisant le Add() parce que j'employais juste "CN = username" au lieu du DN complet. Merci! –
Une idée de pourquoi cela fonctionne localement, mais lance "Accès refusé" lorsqu'il est déplacé vers le serveur IIS? –
@PlatypusMaximus: ressemble à des autorisations - localement, ce code s'exécute dans le contexte de votre propre utilisateur - sur le web, très probablement dans le contexte de l'utilisateur du pool d'applications de IIS –