KrbException: No se pudo crear la credencial. (63) - Sin créditos de servicio

KrbException: No se pudo crear la credencial. (63) - Sin créditos de servicio

Estoy trabajando en la configuración de Tomcat 8.0.35 en Ubuntu 16.04 con Oracle Java 1.8.0_91-b14 (no openjdk) para usar la autenticación Kerberos al autenticarme en nuestra base de datos Microsoft SQL. El problema con el que me encuentro es que después de ejecutar kinitcomo el usuario apropiado con los modificadores apropiados:

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

Recibo este error en el registro de localhost de 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

cuando corro

sudo -u tomcat8 klist

Recibo la respuesta esperada:

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

Cuando capturo paquetes durante el inicio de Tomcat, veo que se pasa un nombre de servicio/instancia de krbtgt/OUR.DOMAIN.LOCAL. Esperaba que este fuera el principal predeterminado mencionado anteriormente. Cuando configuro la serverSpnopción en la cadena de conexión de la base de datos, obtengo los resultados anteriores.

Cuando elimino la serverSpnopción, usa un nombre principal diferente . Desafortunadamente, no puedo usar ese nombre ya que necesitaré inicios de sesión únicos (y, por lo tanto, SPN únicos) para cada una de nuestras instancias de Tomcat.MSSQLSvc/[email protected]

Nuestra cadena de conexión a la base de datos se ve así:

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]"

Descargué la versión 4.2 del controlador JDBC de Microsoft y Tomcat lo está usando.

No sé por qué Tomcat no envía el nombre principal adecuado al autenticarse en la base de datos. Cualquier idea sería muy apreciada.

Puedo publicar krb5.inipara Tomcat, krb5.conf, jaas.confy cualquier otra configuración si fuera útil.

Respuesta1

El archivo de configuración de Kerberos ( /etc/krb5.conf) distingue entre mayúsculas y minúsculas y cambia el default_realmnombre a minúsculas.causará este problema.

información relacionada