ログイン・マッピング
ログイン・マッピングは、 ibm-webservices-bnd.xmi Extended Markup Language (XML) ファイルにあり、 マッピング構成が含まれています。 このマッピング構成は、Web Services Security ハンドラーがトークンの <ValueType> エレメント (メッセージ・ヘッダーから抽出されたセキュリティー・トークンに含まれている) を、対応する認証メソッドにマップする方法を定義しています。 トークンの <ValueType> エレメントは、SOAP メッセージ・ヘッダーから抽出されたセキュリティー・トークン内に含まれています。
送信側 Web Services Security ハンドラーは、 デプロイメント記述子に指定された <AuthMethods> エレメントを基にセキュリティー・トークンを生成および付加します。 例えば、認証メソッドが BasicAuth である場合、 送信側のセキュリティー・ハンドラーは UsernameToken (ユーザー名とパスワードの両方を伴う) を生成し、 SOAP メッセージ・ヘッダーに付加します。 Web Services Security ランタイムは、Java™ Authentication and Authorization Service (JAAS) の javax.security.auth.callback.CallbackHandler インターフェースをセキュリティー・プロバイダーとして使用して、クライアント側 (または Web サービスがクライアントとして機能している場合) にセキュリティー・トークンを生成します。
送信側のセキュリティー・ハンドラーは、javax.security.auth.callback.CallbackHandler インターフェース実装の handle() メソッドを呼び出します。 この実装は、セキュリティー・トークンを作成し、 そのトークンを送信側セキュリティー・ハンドラーに返します。 送信側セキュリティー・ハンドラーは、 コールバック配列内の認証情報に基づいてセキュリティー・トークンを作成します。 次に、セキュリティー・ハンドラーは、 セキュリティー・トークンを Web Services Security のメッセージ・ヘッダーに挿入します。
<loginBinding xmi:id="LoginBinding_1052760331526" authMethod="BasicAuth"
callbackHandler="com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler"/>
- com.ibm.wsspi.wssecurity.auth.callback.GUIPromptCallbackHandler
- ログイン・バインディング情報 (この情報は、HTTP 基本認証情報とは異なります) で基本認証データが定義されていない場合、 前のトークン・タイプは、ログイン・パネルを介してユーザー名とパスワードを求めるプロンプトを出します。 この実装は、 ログイン・バインディングで定義されている基本認証データを使用します。 この CallbackHandler は、BasicAuth 認証メソッドで使用してください。 この CallbackHandler 実装は、ログイン・バインディング情報を求めるプロンプトを出すため、サーバーでは使用しないでください。
- com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler
- 基本認証データがログイン・バインディング (この情報は HTTP 基本認証情報とは異なります) で定義されていない場合、
この実装は、
標準入力 (stdin) を使用してユーザー名とパスワードを求めるプロンプトを出します。
この実装は、
ログイン・バインディングで定義されている基本認証データを使用します。
この CallbackHandler 実装は、BasicAuth 認証メソッドで使用してください。
この CallbackHandler 実装は、ログイン・バインディング情報を求めるプロンプトを出すため、サーバーでは使用しないでください。制約事項: クライアントがマルチスレッド化されており、複数のスレッドが同時に標準から読み取りを行おうとすると、すべてのスレッドは、ユーザー名とパスワード情報を正常に取得しません。そのため、複数のスレッドが同時に標準からデータを取得することがある、マルチスレッド化されたクライアントで com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler 実装を使用することはできません。
- com.ibm.wsspi.wssecurity.auth.callback.NonPromptCallbackHandler
- この CallbackHandler 実装はプロンプトを出しません。 その代わり、 ログイン・バインディング (この情報は HTTP 基本認証情報とは異なります) で定義された基本認証データを使用します。 この CallbackHandler 実装は、BasicAuth 認証メソッドで使用するためのものです。 この CallbackHandler 実装用に、ログイン・バインディング情報で基本認証データを定義する必要があります。 この実装は、Web サービスがクライアントとして実行されているときに、 ダウンストリーム・コールに基本認証 (<wsse:UsernameToken>) を送信する必要がある場合に使用できます。
- com.ibm.wsspi.wssecurity.auth.callback.LTPATokenCallbackHandler
- CallbackHandler は、現行の WebSphere Application Server セキュリティー・コンテキストの run as JAAS サブジェクト (呼び出しサブジェクト) から、Lightweight Third Party Authentication (LTPA) トークンを生成します。しかし、ログイン・バインディング情報 (HTTP 基本認証情報ではありません) に基本認証データが定義されている場合、 この実装は、基本認証データと生成された LTPA トークンを使用します。 トークン・タイプ URI 値とトークン・タイプ・ローカル名 値は、この CallbackHandler 実装のログイン・バインディング情報で定義されていなければなりません。 トークン値の型を使用して、要求の送信側と受信側のバインディング構成に対するトークンを妥当性検査します。 Web Services Security ランタイムは、 LTPA トークンをバイナリー・セキュリティー・トークン (<wsse:BinarySecurityToken>) としてメッセージ SOAP ヘッダーに挿入します。 値の型は必須です。 (詳しくは LTPA を参照。) この CallbackHandler 実装は、LTPA 認証メソッドで使用してください。

- 受信側 Web Services Security ハンドラーは、メッセージを受け取ると、 (メッセージ・ヘッダー内の) トークン・タイプとデプロイメント記述子内に構成されている予想トークン・タイプを比較します。
- Web Services Security ハンドラーは、
メッセージ・ヘッダーからセキュリティー・トークンを抽出し、
トークンの <ValueType> エレメントを対応する認証メソッドにマップします。
マッピング構成は、ibm-webservices-bnd.xmi XML ファイル内の
<loginMappings> エレメントで定義されます。
以下に例を示します。
<loginMappings xmi:id="LoginMapping_1051977980074" authMethod="LTPA" configName="WSLogin"> <callbackHandlerFactory xmi:id="CallbackHandlerFactory_1051977980081" classname="com.ibm.wsspi.wssecurity.auth.callback.WSCallbackHandlerFactoryImpl"/> <tokenValueType xmi:id="TokenValueType_1051977980081" uri="http://www.ibm.com/websphere/appserver/tokentype/5.0.2" localName="LTPA"/> </loginMappings>
com.ibm.wsspi.wssecurity.auth.callback.CallbackHandlerFactory インターフェースは、 javax.security.auth.callback.CallbackHandler のファクトリーです。
- Web Services Security ランタイムは、 ファクトリー実装クラスを開始し、set メソッドを介して Web Services Security ヘッダーからファクトリー・クラスに認証情報を渡します。
- Web Services Security ランタイムは、newCallbackHandler() メソッドを呼び出して、必要なセキュリティー・トークンを生成する javax.security.auth.CallbackHandler オブジェクトを取得します。
- セキュリティー・ハンドラーは、LTPA BinarySecurityToken を受け取ると、WSLogin JAAS ログイン構成と newCallbackHandler() メソッドを使用して、セキュリティー・トークンを妥当性検査します。
予想されるトークン・タイプが SOAP メッセージの Web Services Security ヘッダーにない場合、
要求は SOAP 障害でリジェクトされます。
それ以外の場合は、トークン・タイプを使用してトークン検証用の JAAS ログイン構成にマップします。
認証に成功すると、
JAAS サブジェクトが作成され、実行中のスレッドに関連付けられます。
認証に失敗した場合は、SOAP 障害が出されて、要求はリジェクトされます。
次の表に、認証メソッドと JAAS ログイン構成を示します。
表 1. 認証メソッドおよび JAAS ログイン構成. 認証メソッドは、トークン検証用の JAAS ログイン構成に マップします。 認証メソッド JAAS ログイン構成 BasicAuth WSLogin シグニチャー system.wssecurity.Signature LTPA WSLogin IDAssertion system.wssecurity.IDAssertion 図 2 に、要求受信側のメッセージ処理における受信側セキュリティー・ハンドラーを示します。図 2. 要求受信側の SOAP メッセージ処理デフォルトの <LoginMapping> は、以下のファイルで定義されます。- セル・レベル ws-security.xml およびサーバー・レベル ws-security.xml ファイル
- クライアントは、${install_dir}/properties/ws-security.xml ファイル内のデフォルト・バインディング情報を読み取ります。
- サーバーのランタイム・コンポーネントは、以下のファイルをロードします (ファイルが存在する場合)。
- セル・レベル ws-security.xml ファイルおよびサーバー・レベル ws-security.xml ファイル。 これら 2 つのファイルは、 ランタイムにマージされ、1 つの有効なデフォルト・バインディング情報のセットになります。
基本アプリケーション・サーバーでは、サーバーのランタイム・コンポーネントはサーバー・レベルの ws-security.xml ファイルのみをロードします。 サーバー側の ws-security.xml ファイルおよびアプリケーションの Web Services Security バインディング情報は、管理コンソールを使用して管理されます。 アプリケーションのデプロイメント中に管理コンソールを使用してバインディング情報を指定できます。 Web Services Security ポリシーは、デプロイメント記述子拡張 (ibm-webservicesclient-ext.xmi) で定義され、バインディングは IBM® バインディング拡張 (ibm-webservicesclient-bnd.xmi) に格納されます。しかし、クライアントの場合、${install_dir}/properties/ws-security.xml ファイルでデフォルト・バインディング値を定義します。バインディング情報がバインディング・ファイルで指定されていない場合、ランタイムはデフォルトの ${install_dir}/properties/ws-security.xml ファイルからバインディング情報を読み取ります。