Sono 2 giorni che sto impazzendocon le activedirectory.
Vi spiego brevemente il problema:
Ho bisogno di inserire un utente in una determinata unità organizzativa, quando questo viene censito su una intranet.
Per fare ciò creo un webservice con 4 metodi per l'autenticazione, l'inserimento, la modifica e l'eliminazione.
Di seguito il codice:
[WebMethod]
public XmlRitornoEsito Add_User(string usernameNuovoUtente, string NomeNuovoUtente, string CognomeNuovoUtente, string mailNuovoUtente)
{
XmlRitornoEsito xml = new XmlRitornoEsito();
try
{
DirectoryEntry entry = new DirectoryEntry("LDAP://myserver/OU=myou,DC=mydomain,DC=myextdomain", "administrator" , mypwd, AuthenticationTypes.ServerBind);
DirectoryEntry user = entry.Children.Add(usernameNuovoUtente,entry.Schem aClassName);
user.Properties["objectclass"].Add("top");
user.Properties["objectclass"].Add("person");
user.Properties["objectclass"].Add("organizationalPerson");
user.Properties["objectclass"].Add("user");
user.Properties["sn"].Add(CognomeNuovoUtente);
user.Properties["cn"].Add(NomeNuovoUtente + " " + CognomeNuovoUtente );
user.Properties["givenname"].Add(NomeNuovoUtente);
user.Properties["userpassword"].Add("TopSecret123");
user.CommitChanges();
try
{
object[] password = new object[] {"TopSecret123"};
object ret = user.Invoke("SetPassword", password );
}
catch
{
//Gestione Errore
}
user.CommitChanges();
xml.Errore = -1;
xml.DescrizioneErrore = "";
xml.Esito = true;
}
catch( System.Exception exception )
{
xml.Errore = -1;
xml.DescrizioneErrore = exception.Message;
xml.Esito = false;
}
return xml;
}
Si schianta sempre sul primo CommitChanges() e mi restituisce l'errore L'operazione richiesta non soddisfa alcune delle condizioni associate alla classe dell'oggetto.
Per chi non comprendesse, il perchè risetto la password dopo il primo commitchanges(), il problema è che girando su internet mi è sembrato che la password non se la prenda insieme agli altri campi nell'inserimento.
Tant'è...![]()