Partilhar via


Exclusividade de SPN e UPN

Autor: Justin Turner, engenheiro sênior de escalonamento de suporte com o grupo do Windows

Observação

Este documento foi criado por um engenheiro de atendimento ao cliente da Microsoft e é destinado a administradores e arquitetos de sistemas experientes que procuram explicações técnicas mais profundas para recursos e soluções no Windows Server 2012 R2 do que aquelas geralmente oferecidas em tópicos do TechNet. No entanto, ele não passou pelas mesmas etapas de edição que eles, por isso a linguagem pode parecer que menos refinada do que a geralmente encontrada no TechNet.

Visão geral

Controladores de Domínio que executam o Windows Server 2012 R2 bloqueiam a criação de SPNs (Nomes de entidade de serviço) e UPNs (Nomes de entidade de usuário) duplicados. Isso inclui casos em que a restauração ou a reanimação de um objeto excluído ou a renomeação de um objeto resultaria em uma duplicata.

Tela de fundo

SPNs (nomes de entidade de serviço) duplicados geralmente ocorrem e resultam em falhas de autenticação, podendo levar à utilização excessiva da CPU LSASS. Não há nenhum método predefinido para bloquear a adição de um SPN ou UPN duplicado. *

Valores de UPN duplicados interrompem a sincronização entre o AD local e o Office 365.

*Setspn.exe costuma ser usado para criar SPNs e, funcionalmente, foi integrado à versão lançada com o Windows Server 2008 que adiciona uma verificação de duplicatas.

Tabela SEQ Tabela \* ARABIC 1: Exclusividade de UPN e SPN

Recurso Comentário
Exclusividade de UPN UPNs duplicados interrompem a sincronização de contas do AD locais com serviços baseados no Microsoft Entra ID, como o Office 365.
Exclusividade de SPN O Kerberos requer SPNs para autenticação mútua. SPNs duplicados resultam em falhas de autenticação.

Para obter mais informações sobre os requisitos de exclusividade para UPNs e SPNs, consulte Restrições de exclusividade.

Sintomas

Os códigos de erro 8467 ou 8468, ou seus equivalentes hexadecimais, simbólicos ou de cadeia de caracteres são registrados em várias caixas de diálogo na tela e na ID de evento 2974 no log de eventos do Directory Services. A tentativa de criar um UPN ou SPN duplicado é bloqueada somente nas seguintes circunstâncias:

  • A gravação é processada por um DC do Windows Server 2012 R2

Tabela SEQ Tabela \* ARABIC 2: Códigos de erro de exclusividade de UPN e SPN

Decimal Hex Simbólico String
8647 21C7 ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST A operação falhou porque o valor do SPN fornecido para adição/modificação não é exclusivo em toda a floresta.
8648 21C8 ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST A operação falhou porque o valor do UPN fornecido para adição/modificação não é exclusivo em toda a floresta.

A criação do usuário falha se o UPN não é exclusivo

DSA.msc

O nome de logon do usuário escolhido já está em uso nesta empresa. Escolha outro nome de logon e tente novamente.

Captura de tela que mostra uma mensagem informando que o nome de logon escolhido já está em uso.

Modificar uma conta existente:

O nome de logon de usuário especificado já existe na empresa. Especifique um novo, alterando o prefixo ou selecionando um sufixo diferente na lista.

Captura de tela que mostra uma mensagem informando que o nome de logon usado já existe na empresa.

Centro Administrativo do Active Directory (DSAC.exe)

Uma tentativa de criar um usuário no Centro Administrativo do Active Directory com um UPN que já existe retornará o erro a seguir.

Captura de tela que mostra uma mensagem informando que o usuário não foi criado.

Figura SEQ Figura \* ARABIC 1 Erro exibido no Centro Administrativo do AD quando a criação de um usuário falha devido a UPN duplicado

Evento 2974 Origem: ActiveDirectory_DomainService

Captura de tela que mostra

Figura SEQ Figura \* ARABIC 2 ID de evento 2974 com erro 8648

O evento 2974 lista o valor que foi bloqueado e uma lista de um ou mais objetos (até 10) que já contêm esse valor. Na figura a seguir, você pode ver que o valor dhunt@blue.contoso.com do atributo de UPN já existe em quatro outros objetos. Como esse é um novo recurso no Windows Server 2012 R2, a criação acidental de UPN e SPNs duplicados em um ambiente misto ainda ocorrerá quando DCs de nível inferior processarem a tentativa de gravação.

Captura de tela que mostra a ID do evento ARABIC 2 2974 com o erro 8648.

Figura SEQ Figura \* ARABIC 3 Evento 2974 mostrando todos os objetos que contêm o UPN duplicado

Dica

Examine as IDs de evento 2974 regularmente para:

  • identificar tentativas de criar UPN ou SPNs duplicados
  • identificar objetos que já contêm duplicatas

8648 = "A operação falhou porque o valor do UPN fornecido para adição/modificação não é exclusivo em toda a floresta."

SetSPN:

Setspn.exe teve a detecção de SPN duplicado integrado desde a versão do Windows Server 2008 ao usar a opção "-S". No entanto, você pode ignorar a detecção de SPN duplicado usando a opção "-A". A criação de um SPN duplicado é bloqueada ao direcionar um DC do Windows Server 2012 R2 usando SetSPN com a opção -A. A mensagem de erro exibida é a mesma exibida ao usar a opção -S: "SPN duplicado encontrado, anulando operação!"

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)

Captura de tela que mostra que a operação falhou com o código de erro 0x21c8.

Figura SEQ Figura \* ARABIC 4 Mensagem de erro exibida em ADSIEdit quando a adição de um UPN duplicado é bloqueada

Windows PowerShell

Windows Server 2012 R2:

Captura de tela que mostra uma mensagem indicando que a operação falhou.

PowerShell em execução no Server 2012 direcionado a um DC do Windows Server 2012 R2:

Captura de tela que mostra um erro desconhecido.

DSAC.exe em execução no Windows Server 2012 direcionado a um DC do Windows Server 2012 R2 DC:

Captura de tela que mostra um erro de criação de usuário fora do Windows Server 2012 R2 ao direcionar o DC do Windows Server 2012 R2.

Figura SEQ Figura \* ARABIC 5 DSAC Erro de criação de usuário fora do Windows Server 2012 R2 ao direcionar o DC do Windows Server 2012 R2

Captura de tela que mostra um erro de modificação de usuário fora do Windows Server 2012 R2 ao direcionar o DC do Windows Server 2012 R2.

Figura SEQ Figura \* ARABIC 6 DSAC Erro de modificação de usuário fora do Windows Server 2012 R2 ao direcionar o DC do Windows Server 2012 R2

Falha na restauração de um objeto que resultaria em um UPN duplicado:

Captura de tela que mostra como restaurar um objeto.

Captura de tela que mostra que a operação falhou porque o valor de UPN fornecido para adição/modificação não é exclusivo em toda a floresta.

Nenhum evento é registrado quando um objeto falha ao restaurar devido a um UPN/SPN duplicado.

O UPN do objeto deve ser exclusivo para que ele seja restaurado.

  1. Identificar o UPN que existe no objeto na Lixeira

  2. Identificar todos os objetos que têm o mesmo valor

  3. Remover os UPNs duplicados

Identificar o UPN conflitante no objeto excluído usando 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 os objetos com o mesmo UPN: usando 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

Dica

O parâmetro /deleted não documentado anteriormente em repadmin.exe é usado para incluir objetos excluídos no conjunto de resultados

  • Abra o Centro Administrativo do Active Directory e navegue até Pesquisa Global

  • Selecione o botão de opção Converter em LDAP

  • Digite (userPrincipalName=ConflictingUPN)

    • Substitua ConflictingUPN pelo UPN real que está em conflito
  • Selecione Aplicar.

Captura de tela que mostra a página Pesquisa Global.

Usando o 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

Exclusividade de SPN e UPN

Se o objeto precisar ser restaurado, você precisará remover os UPNs duplicados dos outros objetos. Para apenas um objeto, basta usar ADSIEdit para remover a duplicata. Se houver vários objetos com duplicatas, o Windows PowerShell poderá ser a melhor ferramenta a ser usada.

Para anular o atributo UserPrincipalName usando o Windows PowerShell:

Captura de tela que mostra que a operação falhou com o código de erro 0x21c7.

Observação

O atributo userPrincipalName é um atributo de valor único, portanto, esse procedimento removerá apenas o UPN duplicado.

SPN duplicado

Captura de tela que mostra a mensagem de erro exibida em ADSIEdit quando a adição do SPN duplicado é bloqueada.

Figura SEQ Figura \* ARABIC 8 Mensagem de erro exibida em ADSIEdit quando a adição de um SPN duplicado é bloqueada

Registrada no log de eventos do Directory Services há uma 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

Captura de tela que mostra o erro registrado quando a criação do SPN duplicado é bloqueada.

Figura SEQ Figura \* ARABIC 9 Erro registrado quando a criação do SPN duplicado é bloqueada

Fluxo de trabalho

  • Se DC == GC

    • Nenhuma chamada offbox necessária, a consulta pode ser atendida localmente

    • Ocorrência de UPN

      • Consultar o índice UPN em toda a floresta local em busca do UPN fornecido (userPrincipalName; um índice global)

        • Se as entradas retornadas == 0 –> a gravação continuará

        • Se as entradas retornadas != 0 –> a gravação falhará

          • Evento registrado

          • Também retorna um erro estendido:

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • Ocorrência de SPN

      • Consultar o índice SPN em toda a floresta local em busca do SPN fornecido (servicePrincipalName; um índice global)

        • Se as entradas retornadas == 0 –> a gravação continuará

        • Se as entradas retornadas != 0 –> a gravação falhará

          • Evento registrado

          • Também retorna um erro estendido:

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

  • Se DC != GC

    • Chamada offbox desejável, mas não crítica, ou seja, esta é uma verificação de exclusividade de melhor esforço

      • A verificação continuará no DIT local somente se o GC não puder ser localizado

      • Evento registrado para indicar isso

    • Ocorrência de UPN

      • Enviar consulta LDAP no GC mais próximo? Consultar o índice UPN em toda a floresta do GC em busca do UPN fornecido (userPrincipalName; um índice global)

        • Se as entradas retornadas == 0 –> a gravação continuará

        • Se as entradas retornadas != 0 –> a gravação falhará

          • Evento registrado

          • Também retorna um erro estendido:

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • Ocorrência de SPN

      • Enviar consulta LDAP no GC mais próximo? Consultar o índice SPN em toda a floresta do GC em busca do SPN fornecido (servicePrincipalName; um índice global)

        • Se as entradas retornadas == 0 –> a gravação continuará

        • Se as entradas retornadas != 0 –> a gravação falhará

          • Evento registrado

          • Também retorna um erro estendido:

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

Quando objetos excluídos são reanimados, os valores de SPN ou UPN presentes são verificados quanto à exclusividade. Se uma duplicata for encontrada, a solicitação falhará.

  • Em determinadas alterações de atributo, como Nome do Host DNS, Nome da Conta SAM etc, os SPNs são atualizados adequadamente quando a modificação é feita. No processo, SPNs obsoletos são excluídos e novos SPNs são construídos e adicionados ao banco de dados. As modificações de atributo necessárias em relação às quais esse caminho é disparado são:

    • 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

Se qualquer um dos novos valores de SPN for duplicado, a modificação falhará. Da lista acima, os atributos importantes são ATT_DNS_HOST_NAME (Nome do computador) e ATT_SAM_ACCOUNT_NAME (Nome da conta SAM).

Experimente: Explorar a exclusividade de SPN e UPN

Esta é a primeira de várias atividades "Experimente" no módulo. Não há um guia de laboratório separado para este módulo. As atividades Experimente são atividades livres que permitem explorar o material da lição no ambiente do laboratório. Você tem a opção de seguir o prompt ou sair do script e criar sua atividade.

Observação

  • Esta é a primeira de várias atividades "Experimente".
  • Não há um guia de laboratório separado para este módulo.
  • As atividades Experimente são essencialmente atividades livres que permitem explorar o material da lição no ambiente de laboratório.
  • Você tem a opção de seguir o prompt ou sair do script e criar sua atividade.
  • Embora nem todas as seções tenham um prompt Experimente, ainda incentivamos você a explorar o conteúdo da lição no laboratório, quando apropriado.

Experimente a exclusividade de SPN e UPN. Siga estes prompts ou conclua os seus.

  1. Criar usuários com UPNs

  2. Criar contas com SPNs

  3. Crie um usuário com um UPN já definido anteriormente ou altere o UPN de uma conta existente. Faça o mesmo para um SPN em outra conta

    1. Preencher uma conta de usuário existente com um UPN já em uso

      1. Usando o PowerShell, ADSIEDIT ou o Centro Administrativo do Active Directory (DSAC.exe)
    2. Preencher uma conta existente com um SPN já em uso

      1. Usando o Windows PowerShell, ADSIEDIT ou SetSPN
  4. Observe os erros

Opcionalmente

  1. Verifique com o instrutor da sala de aula se não há problema em habilitar a Lixeira do AD no Centro Administrativo do Active Directory. Se não houver problema, vá para a próxima etapa.

  2. Preencher o UPN em uma conta de usuário

  3. Excluir a conta

  4. Preencher uma conta diferente com o mesmo UPN que a conta excluída

  5. Tentar usar a GUI da Lixeira para restaurar a conta

  6. Imagine que você se depara com o erro que viu na etapa anterior. (e não tem um histórico das etapas que você acabou de executar). Sua meta é realizar a restauração da conta. Consulte as etapas da pasta de trabalho, por exemplo.