複数のWebサーバー(srv1
、srv2
など)に同じHTTPベースのアプリケーションを展開します。 SPNEGO authでアプリケーションを保護する。サーバーはLinuxであり、ADはその存在を知らない。つまり、ドメインに参加していない。私はSPNEGO全体を単一のホスト上でスムーズに動かすことができました。今すぐ次のホストに移動します。私はあなたがADのADサーバ上で生成 Kerberos/SPNEGO:同じADアカウントの複数のSPN
- アカウントが必要なことを教えてくれます発見しました
ほとんどのガイドが、その後 は、Linuxホストに移動しました)
私は、(2)+(3)は常にサーバごとにする必要があると考えていますが、(1)についてはいくらか不確かです。 1つのアカウントでしかできませんか?私が1つしかできないのであれば、これらの口座をすべてADに持たないことが本当に好きです。
This blogはそれを行うことができる方法のために良いレシピを持っています(srv1
用)ktpass
の最初の呼び出しをあなたがインターネット上で見つけるすべてのガイドで説明したようにする必要があります、しかし、後続の呼び出し(のためのsrv2
、srv3
、など)は、-setpassおよび-setupnオプションを使用する必要があります。
しかし、ktpass.exe
ツールを使用すると、アカウントのuserPrincipalName
属性は、最後の呼び出しのprincで指定されたとおりに変更されます。ktpass
です。したがって、srvの名前(例: srv3
は名前にコード化されているため、アカウントの名前は基本的にktpassの呼び出しごとに変更されます。 WebサーバーがSPNEGOイベントのチェーンの最後のステップを実行すると、資格としてkeytabを使用してADに接続するため、SPNに等しいuserPrincipalName
のADアカウントが検索されます。この手順は失敗します。 (source、最後の投稿にスクロール、リスト項目3)。これと矛盾するのは、私がTomcatとJAASを使用していることです。私が理解できる限り、hardcode the principal name to use in my jaas.conf
fileということができるので、keytabからプリンシパル名を効果的に無視できます。
ADの複数のアプリサーバーと単一のアカウントが動作することはありますか?
JAASの設定ファイルでは、システムがKDCに提示するプリンシパル(明示的に)と「ハッシュされたパスワード」(キータブファイルから)を定義しています。あなたのケースでは、KDCはActive Directoryであり、ADはプリンシパルをアカウントIDとして使用しません**。これが 'setspn'コマンドのポイントです:口座IDと(リストの)SPNの間に1..Nマッピングを定義することです。私は 'userPrincipalName' LDAPフィールドがちょうど氷山の先端であると思います...そして、ADは実際のIDとプリンシパルを解決するために何か他のものを使います。 –
ええ、おそらく私の問題は、TomcatとADの間の最後のステップで何が起こっているのか本当に理解していないということでしょう。 – peterh
MITケルベロスサービスであって、マイクロソフトの生き物ではないかのように、Tomcatはポート88に接続して通常のKerberosを処理します。 –