KrbException: Falha ao criar credencial. (63) - Sem créditos de serviço

KrbException: Falha ao criar credencial. (63) - Sem créditos de serviço

Estou trabalhando na configuração do Tomcat 8.0.35 no Ubuntu 16.04 com 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 kinitcomo usuário apropriado com as opções apropriadas:

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

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 capturo pacotes durante a inicialização do Tomcat, vejo um nome de serviço/instância sendo passado de krbtgt/OUR.DOMAIN.LOCAL. Eu esperava que este fosse o diretor padrão mencionado acima. Quando defino a serverSpnopção na string de conexão do banco de dados, obtenho os resultados acima.

Quando removo a serverSpnopção, ela usa um Principal name diferente . Infelizmente não posso usar esse nome, pois precisarei de logins exclusivos (e, portanto, de SPNs exclusivos) para cada uma de nossas instâncias do Tomcat.MSSQLSvc/[email protected]

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

Baixei o driver Microsoft JDBC versão 4.2 e o Tomcat está usando-o.

Não sei por que o Tomcat não está enviando o nome principal adequado ao autenticar no banco de dados. Qualquer visão seria muito apreciada.

Posso postar o krb5.iniTomcat, o krb5.conf, o jaas.confe quaisquer outras configurações, se forem úteis.

Responder1

O arquivo de configuração Kerberos ( /etc/krb5.conf) diferencia maiúsculas de minúsculas e altera o default_realmnome para minúsculascausará esse problema.

informação relacionada