Compartilhar via


Erro gerado pelo Kerberos: KDC_ERR_S_PRINCIPAL_UNKNOWN ou KDC_ERR_PRINCIPAL_NOT_UNIQUE

Os erros de KDC_ERR_S_PRINCIPAL_UNKNOWN e KDC_ERR_PRINCIPAL_NOT_UNIQUE indicam que o cliente está solicitando acesso a um serviço que Kerberos não pode identificar. Esse tipo de erro indica um ou mais dos seguintes problemas:

  • A conta de serviço não está configurada corretamente.
  • O serviço não está usando a conta de serviço configurada para ele.
  • Mais de uma conta está configurada para o serviço.
  • O cliente não solicitou corretamente o serviço.

Cada serviço tem um SPN (nome da entidade de serviço) que o identifica para clientes e outros serviços. O SPN é um atributo da conta do AD DS (Active Directory Domain Services) que o serviço usa. Um serviço pode ser executado no contexto de uma conta de serviço personalizada ou no contexto de uma conta interna, como a conta de computador do computador local. O serviço também pode ser executado em um contexto de segurança relacionado à conta de computador, como Sistema Local ou Serviço de Rede.

A maneira como você configura SPNs difere dependendo do tipo de conta que seu serviço usa:

  • Uma conta de serviço personalizada deve ter um SPN explícito para cada serviço que usa a conta.
  • A conta do computador pode ter SPNs explícitos configurados para os serviços que a usam. No entanto, as classes de serviço comuns são mapeadas automaticamente para o SPN do HOST. O SPN do HOST é gerado automaticamente para cada conta de computador. Nesses casos, alguns serviços podem não ter seu próprio SPN configurado na conta do computador.

Importante

  • A menos que um serviço utilize a conta de computador e o SPN HOST, os SPNs devem ser únicos na floresta do AD DS. Em um ambiente de várias florestas, o SPN deve ser exclusivo em todas as florestas associadas.
  • Um SPN pode ser associado a apenas uma conta. Uma causa comum de problemas de SPN é configurar um serviço para usar uma conta personalizada, mesmo que o SPN esteja associado à conta personalizada e à conta do computador.

Coletar dados de rastreamento e identificar o problema SPN

Se você ainda não coletou dados de rastreamento para o problema, faça isso agora. Para obter mais informações, consulte as diretrizes de solução de problemas de autenticação Kerberos: 3. Coletar dados de rastreamento e tíquetes. Verifique os dados de rastreamento para localizar o SPN solicitado pelo cliente.

Verifique o SPN que a conta de serviço usa

Esses procedimentos diferem ligeiramente dependendo se o serviço usa uma conta personalizada ou a conta de computador. A tabela a seguir resume a diferença.

O serviço usa uma conta personalizada O serviço usa a conta de computador
O SPN solicitado precisa corresponder ao SPN da conta.

O SPN deve ser exclusivo na floresta.
O SPN solicitado pode corresponder a um dos SPNs da conta. No entanto, serviços comuns (como o serviço Web) normalmente usam o SPN host automático em vez de um SPN exclusivo.

Se a conta tiver um SPN específico para o serviço, esse SPN deverá ser exclusivo na floresta.
  1. Obtenha uma lista de SPNs atribuídos à conta de serviço. Para fazer isso, abra uma janela do Prompt de Comando administrativo em um controlador de domínio e execute o seguinte comando:

    setspn -L <Name>
    

    Observação

    • Neste comando, <Name> representa o nome do computador que executa o serviço ou uma conta personalizada que o serviço usa.
    • Em um ambiente de vários domínios, use o <formato Domain\Name> para especificar o domínio da conta.
  2. Pesquise por quaisquer contas que usam o SPN solicitado. Esta pesquisa identifica SPNs duplicados ou que estão atribuídos à conta incorreta.

    Observação

    Para executar esse procedimento, você precisa ter pelo menos permissões de Administrador Corporativo.

    Para determinar a conta ou as contas associadas ao SPN, abra uma janela do Prompt de Comando administrativo e execute um dos comandos a seguir.

    Floresta única Várias florestas confiáveis
    setspn -Q <SPN> setspn -X <SPN>

    Observação

    • Neste comando, <o SPN> representa o SPN que você está procurando.
    • Pesquisar duplicatas, especialmente em toda a floresta, pode levar muito tempo e muita memória.

Para obter mais informações sobre o setspn comando e as opções disponíveis, consulte setspn.

Reconfigurar o SPN conforme necessário

As próximas etapas dependem do resultado dos dados de rastreamento, das setspn consultas e do tipo de conta que seu serviço usa.

Você pode ver qualquer um dos problemas a seguir.

Conta personalizada Conta de Computador
Uma ou mais contas diferentes da conta de serviço têm o SPN. Uma ou mais contas diferentes da conta de computador tem o SPN.
A conta personalizada não tem o SPN. A conta do computador deve ter o SPN, mas não tem. 1
A conta personalizada tem um SPN incorreto ou um SPN que não corresponde ao SPN solicitado pelo cliente.2 A conta do computador tem um SPN incorreto ou um SPN que não corresponde ao SPN solicitado pelo cliente. 2

1 Para obter uma lista dos serviços que podem usar o SPN host da conta do computador, consulte setspn. Se o serviço não for um desses serviços comuns, você precisará configurar um SPN para o serviço na conta de computador.

2 Para obter as informações de solicitação do cliente, consulte os dados de rastreamento de rede.

Use os seguintes métodos para corrigir a configuração do SPN:

  • Se a conta de serviço estiver configurada corretamente, mas o cliente solicitou um SPN incorreto, consulte Corrigir um SPN inconsistente.

  • Se a conta de serviço correta tiver o SPN, mas o SPN não estiver correto, remova o SPN incorreto e adicione o SPN correto. Para obter detalhes, consulte Remover um SPN de uma conta e adicionar um SPN a uma conta de serviço.

  • Se o SPN for atribuído a qualquer conta que não seja a conta de serviço correta (conta personalizada ou conta de computador), remova o SPN dessas contas. Consulte a seção Remover um SPN de uma conta.

  • Se o serviço usar uma conta personalizada, mas a conta personalizada não tiver um SPN atribuído, adicione o SPN. Para obter detalhes, consulte Adicionar um SPN a uma conta de serviço.

  • Se o serviço usar a conta de computador, mas não for um dos serviços comuns descritos neste artigo, adicione o SPN à conta do computador.

Remover um SPN de uma conta

Para remover o SPN de uma conta, execute o seguinte comando em um prompt de comando administrativo:

setspn -D <SPN> <AccountName>

Observação

Neste comando, <o SPN> representa o SPN que você deseja remover. <AccountName> representa a conta (ou uma das contas) da qual você deseja remover o SPN.

Adicionar um SPN a uma conta de serviço

Para adicionar o SPN a uma conta, execute o seguinte comando em um prompt de comando administrativo:

setspn -S \<SPN> \<AccountName>

Observação

Neste comando, <o SPN> representa o SPN que você deseja adicionar. <AccountName> representa a conta (ou uma das contas) à qual você deseja adicionar o SPN.

Corrigir um SPN inconsistente

Determine qual versão do SPN está correta: a que o cliente solicitou ou a que está configurada na conta de serviço.

Se o cliente estiver solicitando um SPN incorreto, verifique as informações que seu cliente usa para criar um SPN para uma solicitação e verifique se as informações de origem estão corretas. O DNS é uma fonte comum dessas informações. Outros clientes (especialmente clientes não navegadores ou personalizados) podem usar outras fontes além do DNS.

Se a conta de serviço usar o SPN incorreto, remova o SPN da conta de serviço e adicione o SPN correto.

Mais informações

Um SPN usa o <formato ServiceClass>/<Host>:<Port>/,<ServiceName> e inclui os seguintes componentes:

  • <ServiceClass> (obrigatório) representa a classe de serviço do serviço.
  • <O host> (obrigatório) representa o nome do computador que executa o serviço.
  • <A porta> (opcional) representa o número da porta que o serviço usa.
  • <ServiceName> (opcional) representa o nome do serviço.

Para obter mais informações sobre como formatar SPNs e quando usar parâmetros opcionais, consulte Formatos de nome para SPNs exclusivos.