Antes de que Microsoft abrazara, extendiera y cambiara el LDAP, la mayoría de las implementaciones tenían objetos para representar la raíz del árbol. Es decir, tienes que empezar desde algún lado.
Por razones que no tengo completamente claras, en Active Directory, cada Dominio en el árbol / bosque está enraizado con un nombre que dc = dominio, dc = com que en realidad no son dos objetos separados, sino que es una raíz virtual del directorio nombre del espacio
Creo que parte de ello proviene del hecho de que, independientemente de lo que se diga sobre Active Directory, sigue siendo una serie de dominios vinculados, y cada dominio debe tratarse como una entidad independiente.
Ahora hay confianzas transitivas automáticas dentro de un árbol de AD, lo que hace que sea menos importante para los usuarios finales, pero a pesar de que el espacio de nombres parece un poco contiguo, en realidad no lo es.
Esto se hace más evidente con algunas de las reglas de nomenclatura con AD. Por ejemplo, sAMAccountName debe ser único dentro de un dominio, independientemente de si están en el mismo contenedor o no. Es decir, el nombre completo debe ser único (no puede tener dos usuarios de John Smith en el mismo contenedor), pero el nombre corto que se usa internamente para muchas cosas (sAMAccountName) debe ser único en todo el dominio.
Otros servicios de directorio tienen requisitos algo similares, como uniqueID realmente debería ser único dentro de todo el directorio, pero eso es más porque las aplicaciones generalmente asumen eso, ya que los escritores de aplicaciones han sido demasiado vagos para lidiar con el problema complejo (no culpo ellos, es un problema difícil) de cómo manejar dos usuarios con nombres cortos de jsmith que intentan usar un servicio, pero que existen en dos contenedores diferentes. (Es decir, cn = jsmith, ou = Londres, dc = acme, dc = com y cn = jsmith, ou = Texas, dc = acme, dc = com).
¿Cómo debe decidir su aplicación el uso de este directorio? La respuesta habitual es dejar que el usuario decida. Pero eso significa detectar este caso, presentar una interfaz de usuario para que el usuario elija y otras cosas.
La mayoría de los escritores de aplicaciones simplemente ignoran esa posibilidad y simplemente usan uniqueID o sAMAccountName porque eso es único (más o menos) y más fácil de hacer.
La diferencia entre uniqueID y sAMAccountName sería que uniqueID debería ser único en todo el espacio del nombre del directorio. Mientras que sAMAccountName solo se garantiza como único dentro del dominio. Si el árbol AD tiene varios dominios, no hay garantía de unicidad entre dominios.