ログイン・マッピングは、
ibm-webservices-bnd.xmi Extended Markup Language (XML) ファイルにあり、
マッピング構成が含まれています。
このマッピング構成は、Web サービス・セキュリティー・ハンドラーがトークンの
<ValueType> エレメント
(メッセージ・ヘッダーから抽出されたセキュリティー・トークンに含まれている) を、
対応する認証メソッドにマップする方法を定義しています。
トークンの <ValueType> エレメントは、
Simple Object Access Protocol (SOAP) メッセージ・ヘッダーから抽出されたセキュリティー・トークン内に含まれています。
送信側 Web サービス・セキュリティー・ハンドラーは、デプロイメント記述子に指定された <AuthMethods> エレメントを基にセキュリティー・トークンを生成および付加します。
例えば、認証メソッドが BasicAuth である場合、
送信側のセキュリティー・ハンドラーは UsernameToken (ユーザー名とパスワードの両方を伴う) を生成し、
SOAP メッセージ・ヘッダーに付加します。
Web サービス・セキュリティー・ランタイムは、
Java Authentication and Authorization Service (JAAS)
javax.security.auth.callback.CallbackHandler インターフェースを
セキュリティー・プロバイダーとして使用して、
クライアント側 (または Web サービスがクライアントとして機能している場合) にセキュリティー・トークンを生成します。
送信側のセキュリティー・ハンドラーは、
javax.security.auth.callback.CallbackHandler インターフェース・インプリメンテーションの handle() メソッドを呼び出します。
このインプリメンテーションは、セキュリティー・トークンを作成し、
そのトークンを送信側セキュリティー・ハンドラーに返します。
送信側セキュリティー・ハンドラーは、
コールバック配列内の認証情報に基づいてセキュリティー・トークンを作成します。
次に、セキュリティー・ハンドラーは、
セキュリティー・トークンを Web サービス・セキュリティーのメッセージ・ヘッダーに挿入します。
必要なセキュリティー・トークンを生成するために使用する CallbackHandler インターフェース・インプリメンテーションは、
Web サービス・セキュリティー・バインディング・ファイル
ibm-webservicesclient-bnd.xmi 内の <loginBinding> エレメントで定義されています。
以下に例を示します。
<loginBinding xmi:id="LoginBinding_1052760331526" authMethod="BasicAuth"
callbackHandler="com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler"/>
<loginBinding> エレメントは、
com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler インターフェースと
BasicAuth 認証メソッドを関連付けます。
WebSphere Application Server は、さまざまなセキュリティー・トークン・タイプの作成に使用できる、以下のような
CallbackHandler インターフェース・インプリメンテーションのセットを提供します。
- 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.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 サービス・セキュリティー・ランタイムは、
LTPA トークンをバイナリー・セキュリティー・トークン (<wsse:BinarySecurityToken>) としてメッセージ SOAP ヘッダーに挿入します。
値の型は必須です。
(詳しくは LTPA を参照。)
この CallbackHandler インプリメンテーションは、
LTPA 認証メソッドで使用してください。
図 1 に、要求送信側メッセージ処理における送信側セキュリティー・ハンドラーを示します。
図 1. 要求送信側の SOAP メッセージ処理
受信側セキュリティー・サーバーは、
複数の認証メソッドと複数のセキュリティー・トークンのタイプをサポートするように構成できます。
以下のステップでは、
要求送信側 SOAP メッセージ処理について説明します。
- 受信側 Web サービス・セキュリティー・ハンドラーは、メッセージを受け取ると、
(メッセージ・ヘッダー内の) トークン・タイプとデプロイメント記述子内に構成されている予想トークン・タイプを比較します。
- Web サービス・セキュリティー・ハンドラーは、
メッセージ・ヘッダーからセキュリティー・トークンを抽出し、
トークンの <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 サービス・セキュリティー・ランタイムは、
ファクトリー・インプリメンテーション・クラスを開始し、set メソッドを介して
Web サービス・セキュリティー・ヘッダーからファクトリー・クラスに認証情報を渡します。
- Web サービス・セキュリティー・ランタイムは、
newCallbackHandler() メソッドを呼び出して、
javax.security.auth.CallbackHandler オブジェクトを取得します
(このオブジェクトは必要なセキュリティー・トークンを生成します)。
- セキュリティー・ハンドラーは、LTPA BinarySecurityToken を受け取ると、
WSLogin JAAS ログイン構成と newCallbackHandler() メソッドを使用して、
セキュリティー・トークンを妥当性検査します。
予想されるトークン・タイプが SOAP メッセージの Web サービス・セキュリティー・ヘッダーにない場合、
要求は SOAP 障害を伴ってリジェクトされます。
それ以外の場合は、トークン・タイプを使用してトークン検証用の JAAS ログイン構成にマップします。
認証に成功すると、
JAAS サブジェクトが作成され、実行中のスレッドに関連付けられます。
認証に失敗した場合は、SOAP 障害が出されて、要求はリジェクトされます。
次の表に、認証メソッドと JAAS ログイン構成を示します。
認証メソッド |
JAAS ログイン構成 |
BasicAuth |
WSLogin |
Signature |
system.wssecurity.Signature |
LTPA |
WSLogin |
IDAssertion |
system.wssecurity.IDAssertion |
図 2 に、要求受信側のメッセージ処理における受信側セキュリティー・ハンドラーを示します。
図 2. 要求受信側の SOAP メッセージ処理

デフォルトの
<LoginMapping> は次のファイルで定義されます。
- サーバー・レベル ws-security.xml ファイル
バインディング・ファイル情報で何も定義されていない場合は、
ws-security.xml のデフォルトが使用されます。
しかし、管理者は、バインディング・ファイルに新規
<LoginMapping> エレメントを定義することにより、
デフォルトをオーバーライドできます。
- クライアントは、
${install_dir}/properties/ws-security.xml ファイル内のデフォルト・バインディング情報を読み取ります。
- サーバーのランタイム・コンポーネントが存在する場合は、次のファイルをロードします。
- サーバー・レベル ws-security.xml ファイル
基本アプリケーション・サーバーでは、サーバーのランタイム・コンポーネントはサーバー・レベルの
ws-security.xml ファイルのみをロードします。
サーバー側の ws-security.xml ファイルおよびアプリケーションの
Web サービス・セキュリティー・バインディング情報は、管理コンソールを使用して管理されます。
アプリケーションのデプロイメント中に管理コンソールを使用してバインディング情報を指定できます。
Web サービス・セキュリティー・ポリシーは、
デプロイメント記述子拡張 (ibm-webservicesclient-ext.xmi) で定義され、
バインディングは IBM バインディング拡張 (ibm-webservicesclient-bnd.xmi) に格納されます。
しかし、クライアントの場合、
${install_dir}/properties/ws-security.xml ファイルでデフォルト・バインディング値を定義します。
バインディング情報がバインディング・ファイルで指定されていない場合、
ランタイムはデフォルトの ${install_dir}/properties/ws-security.xml ファイルからバインディング情報を読み取ります。
重要: バージョン 5.x とバージョン 6
以降のアプリケーションには重要な相違点があります。この資料の情報は、WebSphere Application Server バージョン 6.0.x 以降で使用される、バージョン 5.x アプリケーションのみをサポートしています。この情報は、バージョン 6 以降のアプリケーションには適用されません。