トークン認証におけるホスト チェックの無効化

トークン認証において、Spectrum™ Technology Platform サーバーは要求に応答する前に、クライアントによって提示されたトークンをチェックします。サーバーは、トークンが失効していないか、正しく暗号化されているか、また、正しいホストからのものであるかを確認します。セッション トークンの場合は、セッション ID も確認します。そのいずれかのチェックに失敗すると、トークンは拒否され、サーバーはその要求に応答しません。

クラスタ環境では、要求がリダイレクトされることによって、トークンに指定されているホストとは異なるホストが要求元であるように見えてしまい、"無効なトークン" というエラーが発生する可能性があります。例えば、以下に示す 2 つのノードを持つクラスタがあるとします。



クライアントが要求を発行し、それがノード 1 にルーティングされたとします。トークンが作成され、ホスト 2.2.2.2 (ロード バランサー) に結び付けられます。ロード バランサーが要求元であると、ノードが認識するためです。同じクライアントからの次の要求がノード 2 にルーティングされた場合、トークンはホスト 2.2.2.2 に結び付けられたままとなりますが、要求元はプロキシ サーバー 3.3.3.3 であるように見えます。この場合、トークンが要求元のホストに関連付けられていないように見えることから、ノードはこのトークンを拒否します。

このような場合には、トークンに含まれるホスト情報を無視するように Spectrum™ Technology Platform サーバーを設定する必要があります。この操作は、ロード バランサーとノードの間に異なるネットワーク デバイスが存在する環境においてのみ、実行してください。すべてのノードが同じネットワーク デバイスの背後にある場合は、ホスト チェックを無効にする必要はありません。

注: 以下の手順を実行すると、ホスト チェックは無効になるため、クライアント トークンは実質的にオープン トークンとなります。セッション トークンは、引き続き特定のセッション ID に結び付けられますが、特定のホストには結び付けられません。
  1. Spectrum™ Technology Platform サーバー上で以下のプロパティ ファイルを開きます。

    SpectrumLocation/server/app/conf/spectrum-container.properties

  2. 次のプロパティを false に設定します。
    spectrum.security.authentication.token.remoteClientCheck.enabled=false
  3. プロパティ ファイルを保存して閉じます。
  4. クラスタ内のすべてのノードに対して、この処理を繰り返します。