Estou trabalhando na configuração do Tomcat 8.0.35 no Ubuntu 16.04 com o Oracle Java 1.8.0_91-b14 (não openjdk
) para usar a autenticação Kerberos ao autenticar em nosso banco de dados Microsoft SQL. O problema que estou enfrentando é que, depois de executar kinit
como o usuário apropriado com os switches apropriados:
sudo -u tomcat8 kinit -k -t /etc/tomcat8/tomcat8.keytab HTTP/[email protected]
Estou recebendo este erro no log localhost do 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
Quando eu corro
sudo -u tomcat8 klist
Eu recebo a resposta 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
Quando eu capturar pacotes durante a inicialização do Tomcat, vejo um nome de serviço / instância sendo passado de krbtgt/OUR.DOMAIN.LOCAL
. Eu estava esperando que este seja o principal padrão mencionado acima. Quando eu defino a opção serverSpn
na string de conexão do banco de dados, obtenho os resultados acima.
Quando eu removo a opção serverSpn
, ela usa um nome Principal diferente MSSQLSvc/[email protected]
. Infelizmente, não posso usar esse nome, pois precisarei de logins exclusivos (e, portanto, SPNs exclusivos) para cada uma das instâncias do Tomcat.
Nossa string de conexão com o banco de dados é assim:
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]"
Eu fiz o download da versão 4.2 do driver JDBC da Microsoft e o Tomcat a está usando.
Não sei por que o Tomcat não está enviando o nome principal adequado ao autenticar no banco de dados. Qualquer insight seria muito apreciado.
Eu posso postar o krb5.ini
para o Tomcat, o krb5.conf
, o jaas.conf
e qualquer outra configuração, se eles forem úteis.