web-dev-qa-db-ja.com

既存のサービスIDに新しいSPNを追加する

Spring-Security kerberosを使用してActiveDirectoryに対してWebページへのユーザーを認証するTomcatサーバーがあります。

約25のドメインコントローラーがあります。

このサイトには、2つのCNAMEベースのDNSエイリアスがあります。

このサイトには現在、DNSAレコードと各CNAMEに登録されたSPNを含む1つのサービスIDがあります。

現在すべてが機能していますが、ダウンタイムが発生することなくこの構成を確実に変更する方法がわかりません。

その理由は、クライアントがKerberosチケットをキャッシュするためです。

http://www.juniper.net/techpubs/en_US/uac4.2/topics/concept/user-role-active-directory-about.html

'kerbtray.exe'プログラムは、エンドポイントでKerberosチケットを表示および削除するのに役立ちます。 SPNが更新された場合、またはパスワードが変更された場合は、古いチケットをエンドポイントからパージする必要があります(エンドポイントには、以前のSPNEGOリクエストからMAGシリーズデバイスへのチケットのキャッシュコピーがまだあると想定しています。テスト中は、各認証リクエストの前にチケットをパージする必要があります。 。

キャッシュされたチケットの検査/削除に使用される「klist」プログラムの説明: http://technet.Microsoft.com/en-us/library/hh134826.aspx

したがって、Webサーバーに接続する各クライアント(Windowsを実行しているユーザー)に、SPNまたはパスワードを更新するとすぐに無効になるKerberosチケットがある場合、変更がシームレスであることを確認するにはどうすればよいですか?安全にできる操作はありますか?すべてのユーザーにklistをインストールして、古いチケットを削除するように依頼することはできません。

2
jmh

UNIX側でのこのための戦略は、サービスのキータブにキーの古いコピーと新しいコピーの両方を保持することです。 Kerberosはキーにバージョン番号を保持し、kerberosライブラリは、サービスチケットが提示されたときに使用する正しいバージョンについてキータブをチェックします。

KDCに含めることができるキーのバージョンは1つだけですが、古いバージョンと新しいバージョンの両方のキーがサーバーのキータブにある限り、クライアントはサービスの中断を認識しないはずです。サービスのキータブのインストール方法を説明できれば、おそらく何か提案できます。

おそらく、既存のSPNを変更するのではなく、SPNの追加をテストする必要があります。セキュリティプリンシパルは、複数のSPNを持つことができます。

0
Greg Askew