このタスクでは、ログイン・サブジェクトおよび伝搬されたダウンストリームに設定される、独自の AuthorizationToken インプリメンテーションの作成方法を説明します。
このタスクについて
通常、ユーザー固有の属性を伝搬するにはデフォルトの AuthorizationToken で十分です。
以下のタスクの 1 つを行う場合は、独自のインプリメンテーションを書き込むことを考慮してください。
- 独自のインプリメンテーション内で属性を分離します。
- カスタム・シリアライゼーションを使用して情報をシリアライズします。ターゲットでバイトをデシリアライズし、
その情報をスレッドに追加する必要があります。
このタスクはまた、暗号化および暗号化解除を含むことがあります。
- getUniqueID() アプリケーション・プログラミング・インターフェース (API) を使用してサブジェクトの全体的な固有性に影響を与えます。
カスタム許可トークンをインプリメントするには、
以下のステップを実行する必要があります。
プロシージャー
- AuthorizationToken インターフェースのカスタム・インプリメンテーションを書き込みます。
AuthorizationToken インターフェースをインプリメントするさまざまな方法がたくさんあります。
ただし、AuthorizationToken インターフェースおよびトークン・インターフェースが必要とするメソッドが完全にインプリメントされていることを確認してください。
このインターフェースをインプリメントした後、app_server_root/classes ディレクトリーにこれを配置することができます。その代わりに、専用ディレクトリーにクラスを配置することもできます。ただし、
WebSphere Application Server クラス・ローダーがクラスを探し出し、適切な許可を与えられることを確認してください。
server.policy ファイルにこのクラスを含む Java アーカイブ (JAR) ファイルまたはディレクトリーを追加して、
サーバー・コードが必要とする許可を持つようにします。
ヒント: 伝搬フレームワークによって定義されるすべてのトークン・タイプは、同様なインターフェースを持ちます。
基本的に、トークン・タイプは、com.ibm.wsspi.security.token.Token インターフェースをインプリメントする
マーカー・インターフェースです。
このインターフェースはほとんどのメソッドを定義します。
複数のトークン・タイプをインプリメントする場合は、com.ibm.wsspi.security.token.Token インターフェースをインプリメントする抽象クラスを作成することを考慮してください。
すべてのトークン・インプリメンテーション (AuthorizationToken を含む) は、抽象クラスを拡張する可能性があり、作業のほとんどが完了します。
AuthorizationToken については、例: com.ibm.wsspi.security.token.AuthorizationToken インプリメンテーション
を参照してください
- WebSphere Application Server ログイン中にカスタム AuthorizationToken を追加および受け取ります。
このタスクは通常、
カスタム・ログイン・モジュールをさまざまなアプリケーションおよびシステム・ログイン構成に追加することによって行われます。
ただし、情報をデシリアライズするために、
カスタム Java 直列化可能オブジェクトの伝搬
に説明されているとおり、カスタム・ログイン・モジュールに接続する必要があります。オブジェクトがログイン・モジュールでインスタンス化されると、commit() メソッド中にオブジェクトをサブジェクトに追加することができます。
伝搬させるために、サブジェクトに情報を追加するだけの場合、カスタム Java 直列化可能オブジェクトの伝搬
を参照してください。
情報が確実に伝搬されるようにする場合、
独自のカスタム・シリアライゼーションを行う場合、またはサブジェクト・キャッシング目的で固有性を指定する場合には、
独自の AuthorizationToken インプリメンテーションを作成することを考慮します。
例: カスタム AuthorizationToken ログイン・モジュール
のコード・サンプルは、ログインが初期ログインであるか伝搬ログインであるかを判別する方法を示します。これらのログイン・タイプの違いは、WSTokenHolderCallback が伝搬データを含んでいるかどうかです。
コールバックが伝搬データを含んでいない場合、新規カスタム AuthorizationToken インプリメンテーションを初期化し、それをサブジェクトに設定します。コールバックが伝搬データを含んでいる場合は、
特定のカスタム AuthorizationToken TokenHolder インスタンスを探し、byte[] をカスタム AuthorizationToken オブジェクトに変換して、それをサブジェクト内に設定します。
コード・サンプルは両方のインスタンスを示します。
ログイン・モジュールのコミット・フェーズで AuthorizationToken を読み取り専用にすることができます。
そのトークンを読み取り専用にしない場合は、属性はアプリケーション内に追加されます。
- カスタム・ログイン・モジュールを、カスタム許可トークンのシリアライズ版を受け取るために既に com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule を含んでいる WebSphere Application
Server システム・ログイン構成に追加します。
このログイン・モジュールが com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule が追加した sharedState の情報に依存しているため、このログイン・モジュールを com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule の後に追加します。
既存のログイン構成にカスタム・ログイン・モジュールを追加する方法については、
システム・ログイン構成用のカスタム・ログイン・モジュール開発
を参照してください。
結果
これらのステップが完了すると、カスタム AuthorizationToken がインプリメントされています。