Los objetos de usuario de Active Directory incluyen varios campos que pueden considerarse un identificador. A continuación se enumeran algunos de estos con su etiqueta en ADUC y su nombre de atributo:
- Nombre completo - cn
- ? - nombre
- Inicio de sesión de usuario sAMAccountName - sAMAccountName
- Inicio de sesión de usuario UPN: userPrincipalName
- ? - nombre distinguido
Estoy tratando de lograr que nuestros desarrolladores estandaricen el uso de solo uno de estos cuando escribo código personalizado que se autentica contra AD; el problema es que no estoy seguro de cuál es el "correcto", o si diferentes son los correctos en diferentes circunstancias. ¡Ni siquiera estoy seguro de que alguno de los campos anteriores deba usarse!
¿Alguien más ha elegido uno para usar consistentemente, y qué te influyó en esa decisión? ¿Alguna documentación que aclare el problema?
Respuestas:
Un CN (nombre común) no es bueno para iniciar sesión, porque un CN por sí solo no identifica de forma exclusiva a un usuario. Podría tener un
CN=Ryan Ries,OU=Dallas,DC=Domain,DC=com
y también podría tener un
CN=Ryan Ries,OU=New York,DC=Domain,DC=com
El CN de un usuario también es un RDN (nombre distinguido relativo). Tienen el mismo CN, pero diferentes DN. Puede notar que tiene problemas si tiene dos personas en su organización llamadas Ryan Ries, y tendrá que hacer que SamAccountName para el segundo sea algo así
rries2
.Un DN (nombre distinguido) no es bueno para iniciar sesión, porque ¿quién quiere iniciar sesión en un sistema con un nombre de usuario como
CN=ryan,OU=Texas,DC=brazzers,DC=com
? Si bien el uso de un DN identifica de manera única y definitiva a un usuario, es molesto tener que escribir. Es el mismo tipo de concepto entre rutas relativas y rutas absolutas en un sistema de archivos. También implica que sabe exactamente en qué parte de la estructura del directorio se encuentra el objeto sin tener que buscarlo. Lo que a menudo no haces.Esto se llama Resolución de nombre ambigua (ANR): busca en el directorio un usuario cuando no tiene su nombre distinguido.
UPN (nombre principal del usuario) es bastante bueno porque parecen direcciones de correo electrónico, pueden ser iguales a la dirección de correo electrónico corporativa del usuario, son fáciles de recordar y se prefiere iniciar sesión porque se buscará el nombre primero en el dominio local, antes de buscarlo en el bosque.
Tenga en cuenta ese bit "no requerido" al final al diseñar sus aplicaciones.
SamAccountName también es bueno porque SamAccountName necesita ser único para todos en el dominio (pero no para el bosque). Además, SamAccountNames son cortos. La mayoría de las personas inician sesión con SamAccountNames, a pesar de que no lo identifican de forma exclusiva en un bosque de AD, por lo que debe especificar un nombre de dominio que vaya junto con su SamAccountName para que el sistema sepa en qué dominio está intentando iniciar sesión. .
Aquí hay una gran documentación sobre el tema para leer más:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms677605(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680857(v=vs.85).aspx
fuente
Si se refiere al nombre de usuario como algo que alguien escribiría para iniciar sesión, recomendaría cualquiera
sAMAccountName
, que sería único en combinación con un nombre de dominio, o eluserPrincipalName
, que sería único dentro de un bosque.En cuanto al nombre de usuario como identificador único, Windows usa el SID para todas las entradas de control de acceso y proporciona un conjunto completo de métodos para traducir a SID desde los nombres de usuario. Los SID coinciden con la metáfora del usuario durante la vida útil de una cuenta, ya que los cambios de nombre y movimientos dentro de un dominio no tienen ningún efecto, pero eliminar y volver a crear resultados en un nuevo SID.
Con ese fin, llamaría
LookupAccountName
, que toma una cadena que representa el nombre de usuario y devuelve elsAMAccountName
, elSID
y el nombre de dominio del dominio en el que se encontró el usuario.El usuario puede usar cualquier sintaxis compatible con Windows para iniciar sesión, y no se requiere capacitación adicional.
fuente
DOMAIN\Account
,DOMAIN.COM\Account
,Account
,[email protected]
. Dice que los nombres completos son más rápidos, pero los otros aún están disponibles.Recomendaría permitir al usuario elegir el formato del nombre que desea usar y determinar la entrada del usuario en el lado de la aplicación. por ejemplo: si el usuario escribe: [email protected], considérelo como UPN y busque UPN en AD. Si el usuario escribe: nombre de usuario: considérelo como samAccountName para un dominio predeterminado predefinido y, por supuesto, si el usuario escribe dominio \ nombre de usuario, considérelo como samAccountName del dominio especificado. Siempre recupere el SID del usuario y asigne todos los permisos al SID porque las personas se casan y el nombre de usuario puede cambiar.
fuente