java Kerberos - unix kinit работает, java нет - требуется дополнительная предварительная аутентификация - PullRequest
1 голос
/ 27 февраля 2020

У меня проблема с подключением с использованием аутентификации 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 работает.

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...