Autenticação do Kerberos usando Java e ActiveDirectory: KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN

2

Eu tenho um aplicativo Java habilitado para SSO usando o Kerberos, sob o URL link . Infelizmente algumas coisas não funcionam, o AD diz que não conhece o diretor de serviços. Esta é a troca do TGS-REQ:

Solicitação:

Kerberos TGS-REQ
Record Mark: 1499 bytes
    0... .... .... .... .... .... .... .... = Reserved: Not set
    .000 0000 0000 0000 0000 0101 1101 1011 = Record Length: 1499
Pvno: 5
MSG Type: TGS-REQ (12)
padata: PA-TGS-REQ
KDC_REQ_BODY
    Padding: 0
    KDCOptions: 40810000 (Forwardable, Renewable, Canonicalize)
    Realm: EESERV.LOCAL
    Server Name (Service and Instance): HTTP/alf-test.example.com
        Name-type: Service and Instance (2)
        Name: HTTP
        Name: alf-test.example.com
    till: 2037-09-13 02:48:05 (UTC)
    Nonce: 632225483
    Encryption Types: rc4-hmac rc4-hmac-old rc4-md4 des-cbc-md5 des-cbc-crc rc4-hmac-exp rc4-hmac-old-exp

Responder:

Kerberos KRB-ERROR
Record Mark: 125 bytes
    0... .... .... .... .... .... .... .... = Reserved: Not set
    .000 0000 0000 0000 0000 0000 0111 1101 = Record Length: 125
Pvno: 5
MSG Type: KRB-ERROR (30)
stime: 2011-06-08 12:06:23 (UTC)
susec: 23385
error_code: KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN (7)
Realm: EESERV.LOCAL
Server Name (Service and Instance): HTTP/alf-test.example.com
    Name-type: Service and Instance (2)
    Name: HTTP
    Name: alf-test.example.com
e-data

No entanto, os seguintes trabalhos:

kinit HTTP/alf-test.example.com

Além disso, eu recebo essa saída quando quero que o setspn liste os nomes principais do serviço, o que parece ser bom para mim:

setspn -l test-alfrescohttp
Registered ServicePrincipalNames for CN=Alfresco-Test HTTP,CN=Users,DC=example,DC=com:
    HTTP/alf-test
    HTTP/alf-test.example.com

Portanto, a entidade de serviço parece existir, mas vejo constantemente o erro KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN no Wireshark quando o navegador atinge o host pela primeira vez. Estou confuso, o que poderia estar errado aqui?

Atenciosamente, Michael

    
por Michael Böckling 08.06.2011 / 16:00

2 respostas

3

KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN significa que o KDC não tem ideia de quem detém o SPN; no seu caso, o SPN solicitado é HTTP/self-test.example.com

As duas razões comuns para isso são:

  1. o SPN não existe em nenhuma conta na floresta do Active Directory (não parece ser o seu caso)
  2. há mais de uma conta que mantém o mesmo SPN (SPN duplicado)

Você provavelmente tem um SPN duplicado em algum lugar, portanto, duas contas ou mais estão mantendo o mesmo SPN.

Para verificar a floresta do AD, quais contas mantêm um SPN? Execute o seguinte comando:

setspn -Q HTTP/self-test.example.com

Isso deve mostrar todas as contas (se houver) que contêm esse SPN.

Um * (curinga) também é válido se você desejar usar para uma consulta

por exemplo. setspn -Q HTTP/self-test*

    
por 20.11.2014 / 15:25
1

Solicitando um ticket para Realm: EESERV.LOCAL
Deve solicitar o ticket para Realm: EXAMPLE.COM

Porque o mesmo que a fonte de Registered ServicePrincipalNames for CN=Alfresco-Test HTTP,CN=Users,DC=eeserv,DC=local:

Supondo que o principal de serviço existe no AD e está configurado corretamente, isso pode ser suficiente. Não sei como mudar.

    
por 11.06.2011 / 00:41