Quiz Active Directory

Esistono due soluzioni in .NET per aggiungere un utente ad un gruppo in Active Directory; partendo dal presupposto che mioGruppo e mioUtente siano delle stringhe contenenti delle query LDAP che identificano un gruppo ed un utente vediamole in dettaglio:

 

Soluzione 1

using(DirectoryEntry group = new DirectoryEntry(mioGruppo))

{

      group.Properties["member"].Add(mioUtente);

      group.CommitChanges();

}

 

Soluzione 2

using(DirectoryEntry group = new DirectoryEntry(mioGruppo))

{

      group.Invoke("Add", new object[] {mioUtente} );

      group.CommitChanges();

}

 

Entrambe le soluzioni sono perfettamente funzionanti ma quale delle due è preferibile utilizzare e perché?

 

Technorati Tags:

posted @ venerdì 2 settembre 2005 17:35

Print

Comments on this entry:

# re: Quiz Active Directory

Left by alessio.marziali at 02/09/2005 19:35
Gravatar
E' bene utilizzare sempre la seconda per il seguente motivo.

Di default se utilizzi LDAP lui ritorna sempre e solo
1000 oggetti (1500 se non ricordo male in win2003) multivalore.

Se vuoi ricevere tutti i valori devi utilizzare un metodo che si chiama ranging il quale non è supportato da DirectoryEntry. Nel secondo metodo fai una chiamata diretta ad ADSI (chiami IADsGroup::Add) che non soffre di questo problema.

Praticamente succede che quando tu chiami Gruppo.Properties.Add le tue operazioni vengono eseguite in cache e successivamente rimesse (in un tempo non ben definito) in AD. Questo comporta la perdita di appartenenza al gruppo degli utenti oltre la soglia specificata (1000 non win2003,1500 win2003).

# re: Quiz Active Directory

Left by Daniele Proietti at 02/09/2005 20:28
Gravatar
Penso che Alessio stia dimostrando di essere un vero esperto di Active Directory, anche se ha ucciso il quiz dopo appena due ore.

Per dire la verità non ho mai provato se effettivamente l'utilizzo della "Soluzione 1" causi effettivamente la perdita di appartenenza agli utenti di un gruppo quando si supera il limite specificato (chi ha fatto questo test alzi la mano), tuttavia la risposta giusta è senz'altro la "Soluzione 2" anche per una questione di performance.
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011