Iv'e получил Java-приложение с поддержкой SSO с использованием Kerberos по URL-адресу http://alf-test.example.com/. К сожалению, что-то не работает, AD сообщает, что не знает субъекта-службы. Это биржа TGS-REQ:
Запрос:
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
Ответить:
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
Однако работает следующее:
kinit HTTP/alf-test.example.com
Кроме того, я получаю этот вывод, когда хочу, чтобы setspn перечислял имена участников службы, что мне нравится:
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
Итак, принципал-сервис, кажется, существует, но я постоянно вижу ошибку KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN в Wireshark, когда браузер впервые обращается к хосту. Я запуталась, что тут может быть не так?
С уважением, Майкл
KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN
означает, что KDC не знает, кто владеет SPN, в вашем случае запрошенное SPN HTTP/self-test.example.com
Это происходит по двум распространенным причинам:
У вас, вероятно, где-то есть повторяющееся SPN, поэтому две или более учетных записи имеют одно и то же SPN.
Чтобы проверить лес AD, какие учетные записи содержат SPN, выполните следующую команду:
setspn -Q HTTP/self-test.example.com
Это должно показать вам все учетные записи (если есть), которые имеют это SPN.
А *
(подстановочный знак) также действителен, если вы хотите использовать для запроса
например setspn -Q HTTP/self-test*
Запрос билета на Realm: EESERV.LOCAL
Если запросить билет на Realm: EXAMPLE.COM
Причина такая же, как и источник Registered ServicePrincipalNames for CN=Alfresco-Test HTTP,CN=Users,DC=eeserv,DC=local:
Предполагая, что субъект-служба существует в AD и правильно настроен, изменения этого может быть достаточно. Не знаю, как измениться.