Active Directory

L'indice Attivo di zio Bill

Lettura dei suffissi UPN in Active Directory

Mi è capitato di sviluppare un’applicazione in cui fosse necessario avere una lista contenente tutti gli “UPN Suffix” del dominio (il principale e gli alternativi); praticamente quello che ci viene proposto nella combobox relativamente allo “user logon name” dello snap-in di “ActiveDirectory Users and Computers”. Il codice non è molto difficile:   public string[] GetUpnSuffix() ...

Creare una MailBox in Exchange (un'altra soluzione)

In un mio precedente post avevo spiegato come creare una mailbox in Exchange utilizzando l’SDK di Exchange e .NET; è una soluzione che funziona correttamente, tuttavia a livello di performance lascia un po’ a desiderare, inoltre obbliga ad installare l’SDK di Exchange sul client che utilizziamo. Per fortuna esiste una soluzione alternativa, ovvero scrivere direttamente su Active Directory tutti gli attributi necessari per l’attivazione della MailBox:   DirectoryEntry user = new DirectoryEntry("LDAP://CN=username,DC=myDomain,DC=local");   // Definisce i proxyAddresses string[] proxy = {"SMTP:username@ugidotnet.it", "X400:c=US;a= ;p=Organization;o=Exchange;s=samaccountname;"};   // Imposta le proprietà user.Properties["mail"].Value = " nomeutente@ugidotnet.it"; user.Properties["textEncodedORAddress"].Value = "X400:c=US;a= ;p=Organization;o=Exchange;s=username;"; user.Properties["proxyAddresses"].Value = proxy; user.Properties["msExchUserAccountControl"].Value = 0;   user.Properties["mDBUseDefaults"].Value = "FALSE"; user.Properties["mDBOverHardQuotaLimit"].Value = 3145728; user.Properties["mDBOverQuotaLimit"].Value = 3145728; user.Properties["mDBStorageQuota"].Value = 2831155; user.Properties["msExchQueryBaseDN"].Value = "OU=Empty,OU=MyOU,DC=emslabw3,DC=local"; user.Properties["msExchMailboxFolderSet"].Value...

Creare una MailBox in Exchange

Per creare una mailbox su un account AD tramite .NET è necessario prima di tutto installare l’SDK di Exchange sul proprio computer ed aggiungere la reference ai relativi oggetti COM.   // Definisce il DistinguishedName del MailStore Exchange dove sarà creata la mailbox string mbxDistinguishedName = "CN=Mailbox Store (BASE),CN=First Storage Group,CN=InformationStore,CN=BASE,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=My Community Development Corporation,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=KCDC,DC=org";   // Istanzia l’utente su cui va creata la MailBox DirectoryEntry user = new DirectoryEntry("LDAP://CN=utente,DC=DOMAIN,DC=local");   // Crea la mailbox CDOEXM.IMailboxStore mailbox;   mailbox = (CDOEXM.IMailboxStore) user.NativeObject; mailbox.CreateMailbox(mbxDistinguishedName);   // Memorizza le modifiche user.CommitChanges();   E’ importante ricordare che in realtà questa operazione, non crea realmente la mailbox, ma rende l’utente in AD "MailBox Enabled". La mailbox verrà realmente...

Gioie e dolori di Active Directory

Nel fine settimana ho effettuato, insieme ad alcuni colleghi, un caricamento massiccio di utenze su ActiveDirectory (parliamo di milioni di utenti). Per tutta la fase di caricamento è andato tutto a posto, le performance erano eccellenti ed i sistemi non erano molto stressati; i problemi sono cominciati quando, finiti i caricamenti, sono cominciate le repliche fra i vari Domain Controller .... i dischi sono cominciati ad andare in sofferenza a causa delle pesanti operazioni di scrittura ed i processi di replica hanno preso il sopravvento su qualsiasi altro processo in corso causando una serie di code non previste. Certo la prossima...

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: Active Directory

«maggio»
domlunmarmergiovensab
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456