この例では、Web サービス・セキュリティー、WebSphere Application Server のセキュリティー・インフラストラクチャー、および Java 2 Platform, Enterprise Edition (J2EE) セキュリティーを使用してセキュリティー・トークンを伝搬します。
シナリオ例
この例では、クライアント 1 が
Web サービス 1 を起動します。次に Web サービス 1 が Enterprise JavaBeans (EJB) ファイル 2 を呼び出します。EJB ファイル 2 は Web サービス 3 を呼び出します。そして Web サービス 3 が Web サービス 4 を呼び出します。
図 1. セキュリティー・トークンの伝搬
上記の図は、Web サービス・セキュリティー、WebSphere
Application Server のセキュリティー・インフラストラクチャー、および Java 2 Platform, Enterprise Edition (J2EE) セキュリティーを使用して伝搬されるセキュリティー・トークンを示しています。
Web サービス 1 は、
<wsse:UsernameToken> のみを受け入れ、BasicAuth 認証メソッドを使用するよう構成されています。 ただし、Web サービス 4 は、BasicAuth 認証メソッドを使用して
<wsse:UsernameToken> を受け入れるか、または
<wsse:BinarySecurityToken> として Lightweight Third Party Authentication (LTPA) を受け入れるよう構成されています。
以下のステップでは、前出の図で示されているシナリオについて説明します。scefig
- クライアント 1 は、<wsse:UsernameToken> エレメントの user1 および password を使用して、SOAP メッセージを Web サービス 1 に送信します。
- user1 値および password 値は、Web
サービス・セキュリティー・ランタイムによって認証され、
現在のセキュリティー・コンテキストに Java Authentication and Authorization Service (JAAS) サブジェクトとして設定されます。
- Web サービス 1 は、RMI/IIOP (Remote Method Invocation over
the Internet Inter-ORB Protocol) プロトコルを使用して EJB ファイル 2 を呼び出します。
- user1 ID は、ダウンストリーム呼び出しに伝搬されます。
- EJB ファイル 2 の EJB コンテナーは、user1 の許可検査を実行します。
- EJB ファイル 2 は Web サービス 3 を呼び出します。Web サービス 3 は、LTPA トークンを受け入れるように構成されています。
- EJB ファイル 2 の RunAs 役割は、user2 に対して設定されています。
- LTPA CallbackHandler インプリメンテーションがセキュリティー・コンテキストの現在の JAAS サブジェクトから LTPA トークンを抽出し、Web サービス・セキュリティー・ランタイムがトークンを SOAP ヘッダーに <wsse: BinarySecurityToken> として挿入します。
- Web サービス 3 の Web サービス・セキュリティー・ランタイムは、JAAS ログイン構成を呼び出して LTPA トークンを検証し、このトークンを現在のセキュリティー・コンテキストに JAAS サブジェクトとして設定します。
- Web サービス 3 は、LTPA セキュリティーを Web サービス 4 に送信するよう構成されています。
この場合、Web サービス 3 に対して RunAs 役割が構成されていないことが前提となります。user2 の LTPA トークンは、Web サービス 4 に伝搬されます。
- クライアント 2 は、<wsse:UsernameToken> エレメントを使用して、Web サービス 4 に基本認証データを伝搬します。
Web サービス・セキュリティーによって、WebSphere Application Server セキュリティー・ランタイムおよび J2EE 役割ベースのセキュリティーが補完されます。 この例では、
Web サービスおよび EJB ファイルなどの複数のリソースへのセキュリティー・トークンの伝搬方法を示しています。