KrbException: Не удалось создать учетные данные. (63) - Нет учетных данных службы

KrbException: Не удалось создать учетные данные. (63) - Нет учетных данных службы

Я работаю над настройкой Tomcat 8.0.35 на Ubuntu 16.04 с Oracle Java 1.8.0_91-b14 (не openjdk) для использования аутентификации Kerberos при аутентификации в нашей базе данных Microsoft SQL. Проблема, с которой я сталкиваюсь, заключается в том, что после запуска kinitпод соответствующим пользователем с соответствующими переключателями:

sudo -u tomcat8 kinit -k -t /etc/tomcat8/tomcat8.keytab HTTP/[email protected]

Я получаю эту ошибку в журнале localhost от Tomcat:

Caused by: GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)
Caused by: KrbException: Fail to create credential. (63) - No service creds

Когда я бегу

sudo -u tomcat8 klist

Я получаю ожидаемый ответ:

root@linux-test2:/home/tbourne# sudo -u tomcat8 klist
Ticket cache: FILE:/tmp/krb5cc_111
Default principal: HTTP/[email protected]

Valid starting       Expires              Service principal
06/23/2016 14:33:10  06/24/2016 00:33:10  krbtgt/[email protected]
        renew until 06/24/2016 14:33:07

Когда я захватываю пакеты во время запуска Tomcat, я вижу, что передается имя службы/экземпляра krbtgt/OUR.DOMAIN.LOCAL. Я ожидал, что это будет упомянутый выше Default Principal. Когда я задаю опцию serverSpnв строке подключения к базе данных, я получаю указанные выше результаты.

Когда я удаляю эту serverSpnопцию, используется другое имя Principal . К сожалению, я не могу использовать это имя, так как мне понадобятся уникальные логины (и, следовательно, уникальные SPN) для каждого из наших экземпляров Tomcat.MSSQLSvc/[email protected]

Наша строка подключения к базе данных выглядит так:

property.db.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
property.db.jdbcUrl=jdbc:sqlserver://sql-server.our.domain.local:1434;databaseName=DBAUTH2;integratedSecurity=true;authenticationScheme=JavaKerberos;serverSpn="HTTP/[email protected]"

Я загрузил драйвер Microsoft JDBC версии 4.2, и Tomcat его использует.

Я не понимаю, почему Tomcat не отправляет правильное имя принципала при аутентификации в базе данных. Любое понимание было бы очень ценно.

Я могу выложить конфигурации krb5.iniдля Tomcat, krb5.conf, jaas.confи любые другие, если они будут полезны.

решение1

Файл конфигурации Kerberos ( /etc/krb5.conf) чувствителен к регистру, и изменение default_realmимени на нижний регистрвызовет эту проблему.

Связанный контент