KrbException: 資格情報を生成できません。 (63) - サービスクレジットなし

KrbException: 資格情報を生成できません。 (63) - サービスクレジットなし

openjdkMicrosoft SQLデータベースへの認証時にKerberos認証を使用するために、Oracle Java 1.8.0_91-b14(いいえ)を使用してUbuntu 16.04でTomcat 8.0.35を設定しています。私が経験している問題は、kinit適切なスイッチを使用して適切なユーザーとして実行した後です。

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

Tomcatのlocalhostログに次のエラーが表示されます。

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ことが予想されます。serverSpnデータベース接続文字列にオプションを設定すると、上記の結果が表示されます。

そのオプションを削除すると、serverSpn別のプリンシパル名が使用されます。残念ながら、各Tomcatインスタンスには一意のログイン(したがって一意のSPN)が必要なため、その名前は使用できません。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 Driverバージョン4.2をダウンロードし、Tomcatがそれを使用しています。

データベースへの認証時にTomcatが正しいプリンシパル名を送信しない理由を理解できません。どんな洞察力でも大変感謝いたします。

役に立つ場合は、krb5.iniTomcatkrb5.confやその他の設定を公開できます。jaas.conf

ベストアンサー1

Kerberos構成ファイル(/etc/krb5.conf)は大文字と小文字を区別するため、default_realm名前を小文字に変更してください。この問題を引き起こす

おすすめ記事