このタスクについて
通常、ユーザー固有の属性を伝搬するにはデフォルトの AuthorizationToken で十分です。
以下のいずれかのタスクを行う場合は、独自の実装を書き込むことを考慮してください。
- 独自の実装内で属性を分離します。
- カスタム・シリアライゼーションを使用して情報をシリアライズします。ターゲットでバイトをデシリアライズし、
その情報をスレッドに追加する必要があります。
このタスクはまた、暗号化および暗号化解除を含むことがあります。
- getUniqueID() アプリケーション・プログラミング・インターフェース (API) を使用してサブジェクトの全体的な固有性に影響を与えます。
カスタム許可トークンを実装するには、
以下のステップを実行する必要があります。
- AuthorizationToken インターフェースのカスタム・実装を書き込みます。 AuthorizationToken インターフェースを実装するさまざまな方法がたくさんあります。
ただし、AuthorizationToken インターフェースおよびトークン・インターフェースが必要とするメソッドが完全に実装されていることを確認してください。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
このインターフェースを実装した後、app_server_root/classes ディレクトリーにこれを配置することができます。その代わりに、専用ディレクトリーにクラスを配置することもできます。ただし、WebSphere Application Server クラス・ローダーがクラスを見つけることができ、クラスに適切な許可が与えられるようにしてください。
server.policy ファイルにこのクラスを含む Java™ archive (JAR) ファイルまたはディレクトリーを追加して、
クラスがサーバー・コードに必要な許可を持つようにします。
このインターフェースを実装した後、profile_root/classes ディレクトリーにこれを配置します。クラスについて詳しくは、プロファイルでのカスタム・クラス用クラス・サブディレクトリーの作成を参照してください。
ヒント: 伝搬フレームワークによって定義されるすべてのトークン・タイプは、同様なインターフェースを持ちます。
基本的に、トークン・タイプは、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 の後に追加します。
既存のログイン構成にカスタム・ログイン・モジュールを追加する方法については、『JAAS のシステム・ログイン構成用のカスタム・ログイン・モジュールの開発』を参照してください。