Compartir a través de


Unicidad de SPN y UPN

Se aplica a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 y Windows Server 2012.

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.

Screenshot that shows a message that says the logon name you have chosen is already in use.

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.

Screenshot that shows a message that says the logon name you used already exists in the enterprise.

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.

Screenshot that shows a message that says the new user was not created.

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

Screenshot that shows

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.

Screenshot that shows ARABIC 2 Event ID 2974 with error 8648.

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)

Screenshot that shows that the operation failed with error code 0x21c8.

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:

Screenshot that shows a message indicating that the operation failed.

PowerShell que se ejecuta desde Server 2012 y que tiene como destino un controlador de dominio de Windows Server 2012 R2:

Screenshot that shows an unknown error.

DSAC.exe que se ejecuta en Windows Server 2012 que tiene como destino un controlador de dominio de Windows Server 2012 R2:

Screenshot that shows a user creation error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

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

Screenshot that shows a user modification error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

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:

Screenshot that shows how to restore an object.

Screenshot that shows that the operation failed because the UPN value provided for addition/modification is not unique forest-wide.

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.

  1. Identificar el UPN que existe en el objeto de la Papelera de reciclaje

  2. Identificar todos los objetos que tienen el mismo valor

  3. 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.

  • 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.

Screenshot that shows the Global Search page.

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

SPN and UPN uniqueness

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:

Screenshot that shows the operation failed with error code 0x21c7.

Nota:

El atributo userPrincipalName es un atributo de valor único, por lo que este procedimiento solo quitará el UPN duplicado.

SPN duplicados

Screenshot that shows the error message displayed in ADSIEdit when addition of duplicate SPN is blocked.

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

Screenshot that shows the error logged when creation of duplicate SPN is blocked.

Error Figure SEQ Figure \* ARABIC 9 registrado cuando se bloquea la creación de un SPN duplicado

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.

  1. Creación de nuevos usuarios con UPN

  2. Creación de cuentas con SPN

  3. 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

    1. Rellenar una cuenta de usuario existente con un UPN ya en uso

      1. Uso de PowerShell, ADSIEDIT o el Centro de administración de Active Directory (DSAC.exe)
    2. Rellenar una cuenta existente con un SPN que ya está en uso

      1. Uso de Windows PowerShell, ADSIEDIT o SetSPN
  4. Observar los errores

Opcionalmente

  1. 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.

  2. Rellenar el UPN en una cuenta de usuario

  3. Eliminación de la cuenta

  4. Rellenar una cuenta diferente con el mismo UPN que la cuenta eliminada

  5. Intento de usar la GUI de la papelera de reciclaje para restaurar la cuenta

  6. 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.