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 kinit
como 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 serverSpn
opción en la cadena de conexión de la base de datos, obtengo los resultados anteriores.
Cuando elimino la serverSpn
opció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.ini
para Tomcat, krb5.conf
, jaas.conf
y 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_realm
nombre a minúsculas.causará este problema.