このトピックでは、実行スレッドおよび伝搬されたダウンストリームに設定される、独自の伝搬トークン・インプリメンテーションの作成方法を説明します。
このタスクについて
通常、ユーザー固有でない属性を伝搬するにはデフォルトの伝搬トークンで十分です。
以下のタスクの 1 つを行う場合は、独自のインプリメンテーションを書き込むことを考慮してください。
- 独自のインプリメンテーション内で属性を分離します。
- カスタム・シリアライゼーションを使用して情報をシリアライズします。カスタム・ログイン・モジュールを
インバウンド・システム・ログイン構成に接続することによって、ターゲットでバイトをデシリアライズし、
その情報をスレッドに再度追加する必要があります。
このタスクはまた、暗号化および暗号化解除を含むことがあります。
カスタム伝搬トークンをインプリメントするには、
以下のステップを実行する必要があります。
プロシージャー
- PropagationToken インターフェースのカスタム・インプリメンテーションを書き込みます。
PropagationToken インターフェースをインプリメントするさまざまな方法がたくさんあります。
ただし、PropagationToken インターフェースおよびトークン・インターフェースが必要とするメソッドが完全にインプリメントされていることを確認してください。
このインターフェースをインプリメントした後、profile_root/classes ディレクトリーにこれを配置することができます。profile_root 変数は、
プロファイル作成で profilePath パラメーターに指定されたディレクトリーおよび名前です。クラスについて詳しくは、プロファイルでのカスタム・クラス用クラス・サブディレクトリーの作成
を参照してください。
ヒント: 伝搬フレームワークによって定義されるすべてのトークン・タイプは、同様なインターフェースを持ちます。
トークン・タイプは、com.ibm.wsspi.security.token.Token インターフェースをインプリメントする
マーカー・インターフェースです。
このインターフェースはほとんどのメソッドを定義します。
複数のトークン・タイプをインプリメントする場合は、com.ibm.wsspi.security.token.Token インターフェースをインプリメントする抽象クラスを作成することを考慮してください。
すべてのトークン・インプリメンテーション (伝搬トークンを含む) は、抽象クラスを拡張する可能性があり、その後作業のほとんどが完了します。
伝搬トークンのインプリメンテーションについては、例: com.ibm.wsspi.security.token.PropagationToken インプリメンテーション
を参照してください
- WebSphere Application Server ログイン中にカスタム伝搬トークンを追加および受け取ります。
このタスクは通常、
カスタム・ログイン・モジュールをさまざまなアプリケーションおよびシステム・ログイン構成に追加することによって行われます。
アプリケーションからインプリメンテーションを追加することもできます。ただし、情報をデシリアライズするために、
カスタム Java 直列化可能オブジェクトの伝搬
で説明されているとおりに、カスタム・ログイン・モジュールに接続する必要があります。WSSecurityPropagationHelper クラスには、スレッドに伝搬トークンを設定し、
スレッドからトークンを検索して更新するために使用される API があります。
例: カスタム伝搬トークン・ログイン・モジュール
のコード・サンプルは、ログインが初期ログインであるか伝搬ログインであるかを判別する方法を示します。これらのログイン・タイプの違いは、WSTokenHolderCallback コールバックが
伝搬データを含んでいるかどうかです。
コールバックが伝搬データを含んでいない場合、新規カスタム伝搬トークンのインプリメンテーションを初期化し、それをスレッドに設定します。コールバックが伝搬データを含んでいる場合は、
特定のカスタム伝搬トークン TokenHolder インスタンスを探し、バイト配列をカスタム PropagationToken オブジェクトに変換して、それをスレッドに設定します。
コード・サンプルは両方のインスタンスを示します。
カスタム伝搬トークンがスレッドに追加されるときはいつでも属性を追加することができます。
要求の間に属性を追加し、getUniqueId メソッドが変更される場合、Common Secure Interoperability バージョン 2 (CSIv2) クライアント・セッションは無効となり、
新規情報ダウンストリームを送信することができます。
要求間に属性を追加するとパフォーマンスに影響が出ることがあります。
多くの場合、ダウンストリーム要求に新規伝搬トークンの情報を受け取らせます。
カスタム伝搬トークンをスレッドに追加するには、WSSecurityPropagationHelper.addPropagationToken トークンを呼び出します。
この呼び出しには、WebSphereRuntimePerMission「setPropagationToken」Java 2 セキュリティー許可が必要です。
- カスタム伝搬トークンのシリアライズ版を受け取るために既に com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule ログイン・モジュールを含んでいる WebSphere Application
Server システム・ログイン構成に、カスタム・ログイン・モジュールを追加します。
また、ログイン中にスレッドにカスタム伝搬トークンを生成することがあるどのアプリケーション・ログインにも、このログイン・モジュールを追加できます。
その代わりに、カスタム PropagationToken インプリメンテーションをアプリケーション内から生成することができます。
ただし、それをデシリアライズするには、システム・ログイン・モジュールにインプリメンテーションを追加する必要があります。
既存のログイン構成にカスタム・ログイン・モジュールを追加する方法については、
システム・ログイン構成用のカスタム・ログイン・モジュール開発
を
参照してください。
結果
これらのステップが完了すると、カスタム PropagationToken がインプリメントされています。