web-dev-qa-db-ja.com

キータブとサービスプリンシパル名の作成

Javaサーバー用のキータブをWindowsネットワーク上でKerberos認証をサポートするように設定しようとしています。コマンドラインツールのレベルでも動作するように苦労していますまだサーバーのセットアップまで来ていません!私の今の計画は、開発作業とデバッグを行うため、開発用PCでそれを動作させることです。したがって、私の目標はJava PCで実行されているサーバーと、それに接続している同じマシンで実行されているクライアント。

これが私がこれまでにやったことです、私はすべての種類の間違ったことをしている可能性があるので、私は本当に自分の道を誤解しています!

サービスプリンシパル名を作成しました

ドメイン管理者の1人にこのコマンドを実行してもらいました。

setspn -A TEST/pc-name.mydomain.com my-user-name

これは正常に完了したようで、このSPNを

setspn -L my-user-name

Keytabファイルを作成しました

次のコマンドでキータブを作成しました:

ktpass /princ TEST/[email protected] /pass <my-password> /ptype KRB5_NT_SRV_HST /out <keytab-filename>

これにより、キータブが正常に作成されたように見えますが、ptypeとアカウントタイプが一致しないことを警告しています(ただし、ptypeに何を選択しても、同じ警告が表示されます)。このコマンドを実行すると:

klist -k file:/<keytab-filename>

次に、予想されるSPN、つまりTEST/[email protected]がリストされます。

問題!

ここで、このSPNでキータブが機能することを確認したいので、

kinit -t <keytab-filename> TEST/[email protected]

次に、「krb_error 6クライアントがKerberosデータベースに見つかりません」というエラーが表示されます。

何が悪いのですか?

7
user21693

My-user-nameがActive Directoryのコンピューターオブジェクトとユーザーオブジェクトのどちらを指しているのか、私にはよくわかりません。ユーザーオブジェクトであると想定します。その場合、setspnは適切ではないと思います。これは、既存のマシンアカウントのSPNを変更するためのものです。ユーザーアカウントについては、SRV_HSTが正しいかどうかは疑問です。

明らかに、ユーザーオブジェクトに関連付けられたSPNのサポートは多少制限されています。これは本当に1人のユーザーに限定されているとどこかで読んだことがあります。また、ktpassの呼び出しをうまく機能させることができませんでした。それは、a)SPNに関連付ける必要があるユーザーアカウントを(mapuserを介して)指定すること、およびb)SPNパスワードを設定することを主張したためです。後者の場合、ktpassでキータブを作成することは避けられないと思います。

「標準的な方法」でキータブを作成できました。つまり、専用のユーザーアカウントを設定してSPNに関連付けました。

ktpass /princ TEST/Host@DOMAIN /mapuser user@DOMAIN /pass *  /out foo.keytab /ptype KRB5_NT_PRINCIPAL

その操作は(おそらく)ユーザーのログインを壊しました、しかし私はそれからkinitすることができました

 kinit -k -t /tmp/foo.keytab  TEST/Host@DOMAIN
4