У меня проблема с подключением с использованием аутентификации Kerberos. Если я использую linux kinit с моим настраиваемым KRB5.conf (подключаясь к windows kerberos AD), все работает гладко.
kinit -kVt <MYKEYTAB> <MY_PRINC> -v
keytab specified, forcing -k
Using default cache: /tmp/krb5cc_11574
Using principal: HTTP/<MY_PRINC>@MBID.CZ
Using keytab: <MYKEYTAB>
Authenticated to Kerberos v5
После этого я могу плавно использовать curl для аутентификации на веб-приложении, которое имеет зарегистрировал мое имя пользователя:
curl -kLv -i --negotiate -u: "https://someserver/someapi/someoperation"
И я получаю желаемый ответ.
НО, если я использую java инструмент kinit из jdk (такая же проблема возникает в коде), он говорит, что у меня есть проблема
kinit -J-Dsun.security.krb5.debug=true -J-D"java.security.krb5.conf=<KRB5_CONF_LOCATION>" -t <MYKEYTAB> <MY_PRINC>
Проблема:
>>>KRBError:
sTime is Thu Feb 27 07:14:38 CET 2020 1582784078000
suSec is 280585
error code is 25
error Message is Additional pre-authentication required
sname is krbtgt/<DOMAIN>@<DOMAIN>
eData provided.
msgType is 30
>>>Pre-Authentication Data:
PA-DATA type = 19
PA-ETYPE-INFO2 etype = 18, salt = SALT_FROM_PRINC, s2kparams = null
, что приводит к 401 несанкционированному при попытке аутентификации на сервере "https://someserver/someapi/someoperation"
Оба набора используют один и тот же файл keytab, Principal и файл krb5.config, только unix работает.
Большое спасибо!