Antes da adoção, ampliação e alteração do LDAP pela Microsoft, a maioria das implementações tinha objetos para representar a raiz da árvore. Ou seja Você tem que começar de algum lugar.
Por razões que não estou completamente claro, no Active Directory, cada Domínio na árvore / floresta está enraizado com um nome que dc = domínio, dc = com que não é realmente dois objetos separados, mas sim uma raiz virtual do espaço do nome do diretório.
Acho que parte disso deriva do fato de que, independentemente do que é dito sobre o Active Directory, ainda é uma série de domínios vinculados e cada domínio precisa ser tratado como uma entidade autônoma.
Agora, há as confianças transitivas automáticas em uma árvore do AD, o que faz com que seja menos importante para os usuários finais, mas mesmo que o namespace pareça contíguo, na verdade não é.
Isso se torna mais evidente com algumas das regras de nomenclatura do AD. Por exemplo, sAMAccountName deve ser exclusivo dentro de um domínio, independentemente de estarem no mesmo contêiner ou não. Ou seja O nome distinto completo deve ser exclusivo (você não pode ter dois usuários John Smith no mesmo contêiner), mas o nome abreviado usado para muitas coisas internamente (sAMAccountName) precisa ser exclusivo em todo o domínio.
Outros serviços de diretório possuem requisitos similares, como uniqueID que deve ser exclusivo em todo o diretório, mas isso é mais porque os aplicativos geralmente fazem essa suposição, já que os redatores de aplicativos têm sido preguiçosos demais para lidar com a questão complexa. culpá-los, é um problema difícil) de como lidar com dois usuários com nomes curtos de jsmith tentando usar um serviço, mas existindo em dois contêineres diferentes. (Ou seja, talvez cn = jsmith, ou = Londres, dc = acme, dc = com e cn = jsmith, ou = Texas, dc = acme, dc = com).
Como seu aplicativo que usa esse diretório deve decidir qual usuário usar? A resposta usual é deixar o usuário decidir. Mas isso significa pegar esse caso, apresentar uma interface do usuário para o usuário escolher e outros.
A maioria dos criadores de aplicativos simplesmente ignora essa possibilidade e apenas usa uniqueID ou sAMAccountName porque isso é único (mais ou menos) e mais fácil de fazer.
A diferença entre uniqueID e sAMAccountName seria que uniqueID deve ser exclusivo em todo o espaço de nome de diretório. Considerando que sAMAccountName só é garantido como único dentro do domínio. Se a árvore AD possui vários domínios, não há garantia de exclusividade, entre domínios.