Active Directory Impossible de définir le mot de passe d'un utilisateur
Bonjour,
Je travaille sur la création d'une page permettant de créer des utilisateurs dans l'AD. J'arrive à me connecter et à créer l'utilisateur, mais au moment d'invoker la méthode "SetPassword", j'obtiens l'erreur suivante :
Citation:
Main Exception: Exception has been thrown by the target of an invocation.
Inner Exception: The filename, directory name, or volume label syntax is incorrect. (Exception from HRESULT: 0x8007007B)":null
Voici mon code pour créer l'utilisateur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
public bool CreateUserAccount(string newUserName, string newUserPassword, string newUserLastName, string newUserFirstName, string newUserCompany, string newUserEmailAddress, string newUserDisplayName)
{
bool bCreationStatus = false;
try
{
string connectionPrefix = this.LDAPPath;
DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix, this.LDAPUser, this.LDAPPassword);
DirectoryEntry newUser = dirEntry.Children.Add("CN=" + newUserName, "user");
// Feeds new user properties
newUser.Properties[ADProperties.LASTNAME].Value = newUserLastName;
newUser.CommitChanges();
newUser.Properties[ADProperties.FIRSTNAME].Value = newUserFirstName;
newUser.CommitChanges();
newUser.Properties[ADProperties.DISPLAYNAME].Value = newUserDisplayName;
newUser.CommitChanges();
newUser.Properties[ADProperties.LOGINNAME].Value = newUserName;
newUser.CommitChanges();
newUser.Properties[ADProperties.COMPANY].Value = newUserCompany;
newUser.CommitChanges();
newUser.Properties[ADProperties.EMAILADDRESS].Value = newUserEmailAddress;
newUser.CommitChanges();
// oGUID = newUser.Guid.ToString();
newUser.Invoke("SetPassword", new object[] { newUserPassword });
newUser.CommitChanges();
this.SetAccountExpiresDate(newUser, DateTime.Now.AddMonths(+3));
newUser.CommitChanges();
dirEntry.Close();
newUser.Close();
bCreationStatus = true;
}
catch (System.DirectoryServices.DirectoryServicesCOMException E)
{
bCreationStatus = false;
}
return bCreationStatus;
} |
L'erreur survient à cet endroit :
Code:
1 2
|
newUser.Invoke("SetPassword", new object[] { newUserPassword }); |
J'ai essayé d'impersonifier le code à cet endroit, mais ça ne change rien.
J'ai aussi pensé que le problème venait de la complexité de mon password. Je le génère en utilisant une classe spécifique. Ensuite je teste le password afin de savoir s'il est suffisamment complexe ou non. S'il ne l'est pas, on en génère un nouveau et on recommence le test. S'il passe le test, alors on l'attribue à l'utilisateur. Le test est une expression régulière, et les passwords générés répondent toujours aux critères de complexité de l'AD... Donc le problème ne vient à priori pas de là.
Avez-vous une idée ?
Merci par avance pour votre aide.