Question

Lorsque j'essaie de mettre à jour le champ Nom (correspond au CN) sur UserPrincipal (principal, vraiment), j'obtiens une erreur "Le serveur ne veut pas traiter la demande" sur l'appel vers userPrincipal.save ().

J'ai vérifié pour m'assurer qu'il n'y a pas un autre objet dans le même ou avec le même nom (CN).

Le PrincipalContext auquel je fonctionne est la racine du domaine (pas exactement au niveau de l'OU où le compte utilisateur existe).

Quelle raison pourrait-il y avoir pour cette erreur? Est-ce quelque chose qui pourrait être lié à la politique de sécurité (même si je suis en mesure de mettre à jour tous les autres champs)?

using (var context = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["domain"], ConfigurationManager.AppSettings["rootDN"], ContextOptions.Negotiate, ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"])) {
    var user = UserPrincipal.FindByIdentity(context, IdentityType.Sid, "..."); // SID abbreviated

    user.Name = "Name, Test";

    user.Save();
}

L'utilisateur que j'utilise pour créer le PrincipalContext a les droits de sécurité pour modifier les objets AD. Si je met à jour l'un des autres champs (par exemple, nom de famille, donné), tout fonctionne bien.

ÉDITER:

J'ai pu accomplir ce que je dois faire (en utilisant ADSI), mais je dois exécuter le code suivant sous une usurpation d'identité. Le code d'identification est laid et le code ci-dessous se détache de la manière dont je mets à jour les données publicitaires (en utilisant DirectoryServices.AccountManagement), donc j'aimerais obtenir une meilleure solution.

using (var companyOU = new DirectoryEntry("LDAP://" + company.UserAccountOU)) {
    companyOU.Invoke("MoveHere", "LDAP://" + user.DistinguishedName, "cn=Name\, Test");
}

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top