Unicidad de SPN y UPN
Autor: Justin Turner, ingeniero sénior de escalación de soporte técnico con el grupo de Windows
Nota
Este contenido está escrito por un ingeniero de asistencia al cliente de Microsoft y está destinado a los arquitectos de sistemas y administradores con experiencia que están buscando explicaciones técnicas más detalladas de características y soluciones de Windows Server 2012 R2 que los temas que se suelen proporcionar en TechNet. Sin embargo, no ha experimentado los mismos pasos de edición, por lo que parte del lenguaje puede parecer menos perfeccionado de lo que se encuentra normalmente en TechNet.
Información general
Los controladores de dominio en los que se ejecuta Windows Server 2012 R2 bloquean la creación de nombres de entidad de seguridad de servicio (SPN) y nombres principales de usuario (UPN) duplicados. Esto incluye si la restauración o reanimación de un objeto eliminado o el cambio de nombre de un objeto daría lugar a un duplicado.
Información previa
Los nombres de entidad de seguridad de servicio duplicados (SPN) suelen producirse y dar lugar a errores de autenticación y pueden provocar un uso excesivo de la CPU de LSASS. No hay ningún método de entrada para bloquear la incorporación de un SPN o UPN duplicado. *
Los valores UPN duplicados interrumpen la sincronización entre AD local y Office 365.
*Setspn.exe se usa normalmente para crear nuevos SPN, y funcionalmente se ha integrado en la versión publicada con Windows Server 2008 que agrega una comprobación de duplicados.
Table SEQ Table \* ARABIC 1: exclusividad de UPN y SPN
Característica | Comentario |
---|---|
Exclusividad de UPN | Los UPN duplicados interrumpen la sincronización de cuentas de AD locales con servicios basados en Microsoft Entra ID, como Office 365. |
Exclusividad de SPN | Kerberos requiere SPN para la autenticación mutua. Los SPN duplicados producen errores de autenticación. |
Para obtener más información sobre los requisitos de exclusividad para los UPN y los SPN, consulte Restricciones de exclusividad.
Síntomas
Los códigos de error 8467 u 8468 o sus equivalentes hexadecimales, simbólicos o de cadena se registran en varios diálogos en pantalla y, en el identificador de evento 2974, en el registro de eventos de Servicios de directorio. El intento de crear un UPN o UN SPN duplicados solo se bloquea en las siguientes circunstancias:
- Un controlador de dominio R2 de Windows Server 2012 procesa la escritura.
Table SEQ Table \* ARABIC 2: códigos de error de exclusividad de UPN y SPN
Decimal | Hex | Simbólico | String |
---|---|---|---|
8647 | 21C7 | ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST | Se produjo un error en la operación, ya que el valor de SPN proporcionado para la incorporación o modificación no es único en todo el bosque. |
8648 | 21C8 | ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST | Se produjo un error en la operación, ya que el valor de UPN proporcionado para la incorporación o modificación no es único en todo el bosque. |
Se produce un error en la creación de usuarios si el valor de UPN no es único
DSA.msc
El nombre de inicio de sesión de usuario que ha elegido ya está en uso en esta empresa. Elija otro nombre de inicio de sesión y vuelva a intentarlo.
Modificar una cuenta existente:
El nombre de inicio de sesión de usuario especificado ya existe en la empresa. Especifique uno nuevo, ya sea cambiando el prefijo o seleccionando un sufijo diferente de la lista.
Centro de administración de Active Directory (DSAC.exe)
Un intento de crear un usuario en el Centro de administración de Active Directory con un UPN que ya existe devuelve el siguiente error.
Se muestra el error Figure SEQ Figure \* ARABIC 1 en el Centro de administración de AD cuando se produce un error en la creación de un nuevo usuario debido a un UPN duplicado
Origen del evento 2974: ActiveDirectory_DomainService
Evento Figure SEQ Figure \* ARABIC 2 con Id. 2974 y con el error 8648
El evento 2974 enumera el valor bloqueado y una lista de uno o varios objetos (hasta 10) que ya contienen ese valor. En la siguiente ilustración, puede ver que el valor dhunt@blue.contoso.com del atributo UPN ya existe en otros cuatro objetos. Dado que se trata de una nueva característica en Windows Server 2012 R2, la creación accidental de UPN y SPN duplicados en un entorno mixto se seguirá produciendo cuando los controladores de dominio de nivel descendente procesen el intento de escritura.
Evento Figure SEQ Figure \* ARABIC 3 con Id. 2974 que muestra todos los objetos que contienen el UPN duplicado
Sugerencia
Revise periódicamente el identificador de evento 2974 para lo siguiente:
- Identificar intentos de crear UPN o SPN duplicados
- Identificar objetos que ya contienen duplicados
8648 = "Se produjo un error en la operación, ya que el valor de SPN proporcionado para la incorporación o modificación no es único en todo el bosque."
SetSPN:
Setspn.exe ha integrado la detección de SPN duplicada desde la versión de Windows Server 2008 al usar la opción "-S ". Sin embargo, puede omitir la detección de SPN duplicada mediante la opción "-A ". La creación de un SPN duplicado se bloquea al dirigirse a un controlador de dominio de Windows Server 2012 R2 mediante SetSPN con la opción -A. El mensaje de error mostrado es el mismo que el que se muestra al usar la opción -S: "Se encontró un SPN duplicado, anulando la operación".
ADSIEDIT:
Operation failed. Error code: 0x21c8
The operation failed because UPN value provided for addition/modification is not unique forest-wide.
000021C8: AtrErr: DSID-03200BBA, #1: 0: 000021C8: DSID-03200BBA, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90290 (userPrincipalName)
Mensaje de error Figure SEQ Figure \* ARABIC 4 que se muestra en ADSIEdit cuando se bloquea la adición de UPN duplicado
Windows PowerShell
Windows Server 2012 R2:
PowerShell que se ejecuta desde Server 2012 y que tiene como destino un controlador de dominio de Windows Server 2012 R2:
DSAC.exe que se ejecuta en Windows Server 2012 que tiene como destino un controlador de dominio de Windows Server 2012 R2:
Error de creación de usuario de DSAC Figure SEQ Figure \* ARABIC 5 en un controlador de dominio que no es de Windows Server 2012 R2 mientras se dirige a un controlador de dominio de Windows Server 2012 R2
Error de modificación de usuario de DSAC Figure SEQ Figure \* ARABIC 6 en un controlador de dominio que no es de Windows Server 2012 R2 mientras se dirige a un controlador de dominio de Windows Server 2012 R2
Se produce un error en la restauración de un objeto que provocaría un error de UPN duplicado:
No se registra ningún evento cuando un objeto no se restaura debido a un UPN o SPN duplicado.
El UPN del objeto debe ser único para que se restaure.
Identificar el UPN que existe en el objeto de la Papelera de reciclaje
Identificar todos los objetos que tienen el mismo valor
Quitar los UPN duplicados
Identificar el UPN en conflicto en el objeto eliminado mediante repadmin.exe
Repadmin /showattr DCName "DN of deleted objects container" /subtree /filter:"(msDS-LastKnownRDN=<NAME>)" /deleted /atts:userprincipalname
repadmin /showattr DCName "CN=Deleted Objects,DC=blue,DC=contoso,DC=com" /subtree /filter:"(msDS-LastKnownRDN=Dianne Hunt2)" /deleted /atts:userprincipalname
C:\>repadmin /showattr winbluedc1 "cn=deleted objects,dc=blue,dc=contoso,dc=com" /subtree /filter:"(msds-lastknownrdn=Dianne Hunt2)" /deleted /atts:userprincipalname
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Object
s,DC=blue,DC=contoso,DC=com
1> userPrincipalName: dhunt@blue.contoso.com
Para identificar todos los objetos con el mismo UPN utilizando Repadmin.exe
repadmin /showattr WinBlueDC1 "DC=blue,DC=contoso,DC=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN
C:\>repadmin /showattr winbluedc1 "dc=blue,dc=contoso,dc=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN
DN: CN=Administrator,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser1,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser10,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser100,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt,OU=Marketing,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Objects,DC=blue,DC=contoso,DC=com
Sugerencia
El parámetro /deleted no documentado anteriormente en repadmin.exe se usa para incluir objetos eliminados en el conjunto de resultados.
Uso de la búsqueda global
Abra el Centro de administración de Active Directory y vaya a Búsqueda global
Seleccione el botón de radio Convertir a LDAP
Escriba (userPrincipalName=ConflictingUPN)
- Reemplace ConflictingUPN por el UPN real que está en conflicto
Seleccione Aplicar.
Uso de Windows PowerShell
Get-ADObject -LdapFilter "(userPrincipalName=dhunt@blue.contoso.com)" -IncludeDeletedObjects -SearchBase "DC=blue,DC=Contoso,DC=com" -SearchScope Subtree -Server winbluedc1.blue.contoso.com
Si el objeto debe restaurarse, será preciso quitar los UPN duplicados de los restantes objetos. En el caso de un solo objeto, es tan fácil como utilizar ADSIEdit para quitar el duplicado. Si hay varios objetos con duplicados, es posible que Windows PowerShell sea la mejor herramienta para hacerlo.
Para anular el atributo UserPrincipalName mediante Windows PowerShell:
Nota
El atributo userPrincipalName es un atributo de valor único, por lo que este procedimiento solo quitará el UPN duplicado.
SPN duplicados
Mensaje de error Figure SEQ Figure \* ARABIC 8 que se muestra en ADSIEdit cuando se bloquea la adición de UPN duplicado
El registro de eventos de Servicios de directorio es un ActiveDirectory_DomainService id. de evento 2974.
Operation failed. Error code: 0x21c7
The operation failed
The attribute value provided is not unique in the forest or partition. Attribute:
servicePrincipalName Value=<SPN>
<Object DN> Winerror: 8467
Flujo de trabajo
If DC == GC
No se requiere ninguna llamada de la bandeja de salida, la consulta se puede satisfacer localmente
Normas de mayúsculas y minúsculas de UPN
Consulta del índice UPN de todo el bosque local para el UPN proporcionado (userPrincipalName; un índice global)
Si las entradas devueltas == 0 -> la escritura continúa
Si las entradas devueltas != 0 -> se produce un error de escritura
Evento registrado
También devuelve un error extendido:
8648:
ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST
Normas de mayúsculas y minúsculas de SPN
Consulta del índice SPN de todo el bosque local para el SPN proporcionado (userPrincipalName; un índice global)
Si las entradas devueltas == 0 -> la escritura continúa
Si las entradas devueltas != 0 -> se produce un error de escritura
Evento registrado
También devuelve un error extendido:
8647:
ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST
If DC != GC
La llamada de la bandeja de salida es deseable pero no crítica, es decir, se trata de una comprobación de exclusividad recomendada
La comprobación se realiza en el DIT local solo si no se puede encontrar GC
Evento registrado para indicar tal situación
Normas de mayúsculas y minúsculas de UPN
Enviar consulta LDAP en GC más cercano ? Consulta del índice UPN de todo el bosque local para el UPN proporcionado (userPrincipalName; un índice global)
Si las entradas devueltas == 0 -> la escritura continúa
Si las entradas devueltas != 0 -> se produce un error de escritura
Evento registrado
También devuelve un error extendido:
8648:
ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST
Normas de mayúsculas y minúsculas de SPN
Enviar consulta LDAP en GC más cercano ? Consulta del índice SPN de todo el bosque GC para el SPN proporcionado (servicePrincipalName; un índice global)
Si las entradas devueltas == 0 -> la escritura continúa
Si las entradas devueltas != 0 -> se produce un error de escritura
Evento registrado
También devuelve un error extendido:
8647:
ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST
Cuando los objetos eliminados se vuelven a animar, se comprueban si los valores de SPN o UPN son únicos. Si se encuentra un duplicado, se produce un error en la solicitud.
En el caso de determinados cambios de atributo, como el nombre de host DNS, el nombre de la cuenta SAM, etc., cuando se realiza la modificación, los SPN se actualizan según corresponda. En el proceso, se eliminan los SPN obsoletos y se construyen y se agregan nuevos SPN a la base de datos. Las modificaciones de atributo necesarias en las que se desencadena esta ruta de acceso son:
ATT_DNS_HOST_NAME
ATT_MS_DS_ADDITIONAL_DNS_HOST_NAME
ATT_SAM_ACCOUNT_NAME
ATT_MS_DS_ADDITIONAL_SAM_ACCOUNT_NAME
ATT_SERVER_REFERENCE_BL
ATT_USER_ACCOUNT_CONTROL
Si alguno de los nuevos valores de SPN es un duplicado, se producirá un error en la modificación. De la lista anterior, los atributos importantes son ATT_DNS_HOST_NAME (nombre del equipo) y ATT_SAM_ACCOUNT_NAME (nombre de cuenta SAM).
Pruebe esto: Exploración de la exclusividad de SPN y UPN
Esta es la primera de varias actividades de tipo "Pruebe esto" en el módulo. No hay una guía de laboratorio independiente para este módulo. Las actividades del tipo Pruebe esto tienen forma libre, lo que le permiten explorar el material de la lección en el entorno de laboratorio. Tiene la opción de seguir el mensaje o desactivar el script y aparecer con su propia actividad.
Nota
- Esta es la primera de varias actividades de tipo "Pruebe esto".
- No hay una guía de laboratorio independiente para este módulo.
- Las actividades de tipo Pruebe esto son esencialmente actividades de forma libre que permiten explorar el material de la lección en el entorno de laboratorio.
- Tiene la opción de seguir el mensaje o desactivar el script y aparecer con su propia actividad.
- Aunque no todas las secciones tienen una solicitud Pruebe esto, se recomienda que explore el contenido de la lección en el laboratorio cuando corresponda.
Experimente con la exclusividad de SPN y UPN. Siga estas indicaciones o complete las suyas propias.
Creación de nuevos usuarios con UPN
Creación de cuentas con SPN
Cree un nuevo usuario con un UPN ya definido previamente o cambie el UPN de una cuenta existente. Haga lo mismo para cualquier SPN de otra cuenta
Rellenar una cuenta de usuario existente con un UPN ya en uso
- Uso de PowerShell, ADSIEDIT o el Centro de administración de Active Directory (DSAC.exe)
Rellenar una cuenta existente con un SPN que ya está en uso
- Uso de Windows PowerShell, ADSIEDIT o SetSPN
Observar los errores
Opcionalmente
Compruebe con el instructor del aula que es apropiado habilitar la Papelera de reciclaje de AD en el Centro de administración de Active Directory. Si es así, vaya al paso siguiente.
Rellenar el UPN en una cuenta de usuario
Eliminación de la cuenta
Rellenar una cuenta diferente con el mismo UPN que la cuenta eliminada
Intento de usar la GUI de la papelera de reciclaje para restaurar la cuenta
Imagine que ha aparecido el error que vio en el paso anterior (y que no tiene un historial de los pasos que acaba de realizar). El objetivo es completar la restauración de la cuenta. Consulte el libro para ver los pasos.