
Temos um serviço .Net Windows que usa um Httplistener e autentica solicitações usando Kerberos. Quando os usuários estão se conectando por meio do navegador, um erro no log de eventos dos usuários mostra um ID de evento Kerberos 4:
O cliente Kerberos recebeu um erro KRB_AP_ERR_MODIFIED do servidor$nome de usuário$. O nome de destino usado foi HTTP/$servername$.$domain$.com.au. Isso indica que o servidor de destino não conseguiu descriptografar o ticket fornecido pelo cliente. Isso pode ocorrer quando o nome principal do servidor de destino (SPN) está registrado em uma conta diferente da conta que o serviço de destino está usando. Certifique-se de que o SPN de destino esteja registrado apenas na conta usada pelo servidor. Esse erro também poderá ocorrer se a senha da conta de serviço de destino for diferente daquela configurada no Kerberos Key Distribution Center para esse serviço de destino. Certifique-se de que o serviço no servidor e o KDC estejam configurados para usar a mesma senha. Se o nome do servidor não estiver totalmente qualificado e o domínio de destino ($domain$.COM.AU) for diferente do domínio do cliente ($domain$.COM.AU), verifique se há contas de servidor com nomes idênticos nesses dois domínios ou use o nome completo para identificar o servidor.
Por algum motivo, o servidor que está reportando é o usuário que está executando o serviço. A primeira linha:
O cliente Kerberos recebeu um erro KRB_AP_ERR_MODIFIED do servidor$nome de usuário$.
Cada site (incluindo Server Fault) tem correções para esse erro relacionado a problemas de SPN, mas sempre tem um nome de servidor no erro. Não consigo encontrar a mensagem acima com um nome de usuário.
Tentamos diferentes usuários e isso altera a parte acima da mensagem de erro. Todas as contas de domínio têm o mesmo problema. Se executarmos o serviço como conta do sistema local não teremos esse problema, mas isso nos causa outros problemas com o serviço (ele precisa de conta de domínio para outras permissões). Não temos, nunca tivemos, nenhum servidor com o mesmo nome dos nomes de usuário que tentamos.
Alguém já viu esse problema com o nome de usuário aparecendo aqui antes? Qual é a solução?
Todos os servidores são Windows 2012 (não R2).
Responder1
Que bom que você resolveu seu próprio problema, mas parece que você não entende por que o que executou resolveu o problema.
Resumindo, o SPN precisa ser definido no objeto apropriado. Parece que você definiu o SPN no objeto do computador no AD que estava executando o serviço. É por isso que as coisas começaram a funcionar se você alterasse o serviço para rodar como SYSTEM. Mas se você alterá-lo para ser executado como usuário de domínio, será necessário mover o SPN para esse usuário. E é importante que vocêmover(leia-se: exclua-o da conta do computador) e não apenascópia deisto. SPNs duplicados quebrarão as coisas.
Responder2
Encontrei a solução aqui:http://blogs.technet.com/b/dcaro/archive/2013/07/04/fixing-the-security-kerberos-4-error.aspx
Eu corri:
setspn -A HTTP/$servername$.$domain$.com.au $username$
e isso resolveu o problema