Prima di abbracciare, estendere e modificare LDAP di Microsoft, la maggior parte delle implementazioni aveva oggetti per rappresentare la radice dell'albero. Cioè Devi iniziare da qualche parte.
Per motivi che non sono del tutto chiari, in Active Directory, ogni dominio nella struttura / foresta è rootato con un nome che dc = domain, dc = com che non è in realtà due oggetti separati, piuttosto è una radice virtuale della directory spazio dei nomi.
Penso che parte del fatto derivi dal fatto che, indipendentemente da ciò che viene detto su Active Directory, è ancora una serie di domini collegati e ogni dominio deve essere trattato come un'entità autonoma.
Ora ci sono trust transitivi automatici all'interno di una struttura ad albero pubblicitario, il che rende meno importante per gli utenti finali, ma anche se lo spazio dei nomi sembra in qualche modo contiguo, in realtà non lo è.
Ciò diventa più evidente con alcune delle regole di denominazione con AD. Ad esempio sAMAccountName deve essere univoco all'interno di un dominio, indipendentemente dal fatto che si trovino nello stesso contenitore o meno. Ad esempio, il nome distinto completo deve essere univoco (non è possibile avere due utenti John Smith nello stesso contenitore), ma il nome breve utilizzato per molte cose internamente (sAMAccountName) deve essere univoco nell'intero dominio.
Altri servizi di directory hanno requisiti in qualche modo simili, come uniqueID dovrebbe essere davvero univoco all'interno dell'intera directory, ma ciò è dovuto al fatto che le applicazioni di solito fanno questo presupposto, poiché gli autori di applicazioni sono stati troppo pigri per affrontare il problema complesso (non ho colpa loro, è un problema difficile) su come gestire due utenti con nomi brevi di jsmith che cercano di usare un servizio, ma che esistono in due contenitori diversi. (Vale a dire forse cn = jsmith, ou = London, dc = acme, dc = com e cn = jsmith, ou = Texas, dc = acme, dc = com).
In che modo l'applicazione che utilizza questa directory deve decidere quale utente utilizzare? La solita risposta è lasciare che l'utente decida. Ma questo significa catturare questo caso, presentare un'interfaccia utente all'utente tra cui scegliere e quant'altro.
La maggior parte degli autori di applicazioni ignora questa possibilità e usa semplicemente IDID o sAMAccountName perché è unico (più o meno) e più facile da fare.
La differenza tra uniqueID e sAMAccountName sarebbe che uniqueID dovrebbe essere univoco in tutto lo spazio dei nomi di directory. Considerando che sAMAccountName è garantito unico nel dominio. Se l'albero AD ha diversi domini, non esiste alcuna garanzia di unicità tra domini.