ダウンストリーム JAX-RS リソースの保護

Java™ API for RESTful Web Services (JAX-RS) のダウンストリーム・リソースは、認証用に BasicAuth メソッドを構成することによって、および LTPA JAX-RS セキュリティー・ハンドラーを使用してユーザー認証用のシングル・サインオンを利用することによって、保護することができます。

始める前に

このタスクは、以下のステップが完了していることを前提としています。
  • デプロイメント・マネージャー・セルに統合されたアプリケーション・サーバーに対して、 セル・プロファイルを定義済みであること。
  • JAX-RS アプリケーションをアプリケーション・サーバーにインストール済みであること。
  • JAX-RS アプリケーションに対してセキュリティーを有効にしてあること。
  • ダウンストリーム JAX-RS アプリケーションがユーザー認証に基本認証 (BasicAuth) 方式を使用するよう構成することによって、Web コンテナー内で JAX-RS アプリケーションを保護してあること。

このタスクについて

JAX-RS リソースを構成する際に、 新しい LTPA JAX-RS セキュリティー・ハンドラーを使用して、 ダウンストリーム・リソース呼び出しをシームレスに認証することができます。

ダウンストリーム JAX-RS リソースを呼び出すとき、 呼び出し側アプリケーションはターゲット・リソースへの認証を必要とします。 ダウンストリーム・サーバー上のターゲット・リソースがセキュリティーのために BasicAuth 方式 を使用している場合、呼び出し側アプリケーションは JAX-RS リソースに対してシングル・サインオン (SSO) を 利用できます。シングル・サインオンの使用によって、認証されたコンテキスト はダウンストリーム呼び出しに順に伝搬していきます。LTPA ベースの セキュリティー・クライアント・ハンドラーを使用して、セル環境の複数サーバー間に分散している ダウンストリーム・リソースへの認証を行うことができます。

この シナリオを具体的に説明するため、セル内に 2 つのサーバーがあり、 これらのサーバーの両方に JAX-RS リソースをデプロイしたと想定します。server1 上 の 1 つのリソースから、server2 にデプロイされた別のリソース を呼び出す必要があるとします。server2 上のリソースが認証に BasicAuth 方式を 使用して保護されている場合、 LTPA JAX-RS セキュリティー・ハンドラーを使用することによって、アプリケーションでのユーザー ID およびパスワードの提供または管理を必要とせずに、 シングル・サインオンを利用することができ、ダウンストリーム呼び出しにユーザー認証をシームレスに伝搬することができます。

図 1. JAX-RS ダウンストリーム・リソースの保護認証に BasicAuth 方式を構成することと、LTPA JAX-RS セキュリティー・ハンドラー
を使用することによって、ダウンストリームのリソースを保護できます。

アプリケーションのビルド時に、 JAX-RS セキュリティー・ハンドラーを 使用するダウンストリーム・サーバーへのユーザー認証を構成するには、以下の手順を使用します。

手順

  1. アプリケーションのビルド時に、LTPA ベースのセキュリティー・クライアント・ハンドラー LtpaAuthSecurityHandler を使用して、セル環境の複数のサーバーに分散しているダウンストリーム・リソースへの認証を行います。
    • JAX-RS 1.1 で、LtpaAuthSecurityHandler クラスを使用する場合は、URL に HTTPS スキームを使用してターゲットとなるリソースを指定してください。また、ターゲット・アプリケーション が SSL に対応していることを確認してください。 LTPA Cookie などのユーザー・クレデンシャルを送信する際には、 SSL 接続を使用することを強くお勧めします。LtpaAuthSecurityHandler クラスで、SSL 要件を明示的にオフにすることができます。オフにする場合は、セキュリティー・ハンドラーで値 false を指定して setSSLRequired メソッドに呼び出します。デフォルト値は true です。
      yourLtpaAuthSecHandler.setSSLRequired(false);
    • JAX-RS 2.0 では、 com.ibm.ws.jaxrs.client.ltpa.handler クライアント・プロパティーを使用して、SSO Cookie を設定して値に true を指定します。
      ClientBuilder cb = ClientBuilder.newBuilder();
      
              Client c = cb.build();
              c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");        WebTarget t = c.target("http://" + serverIP + ":" + serverPort + "/" + moduleName + "/ComplexClientTest/ComplexResource");
              String res = t.path("echo1").path("test1").request().get(String.class);
              c.close();        
              ret.append(res);
  2. セキュリティー・ハンドラーをハンドラー・チェーンに追加します。
  3. REST クライアント・インスタンスを作成します。
  4. 対話するリソース・インスタンスを作成します。
  5. リソース・アドレスを表す値を置換します。

タスクの結果

シングル・サインオンを使用してダウンストリーム呼び出しにユーザー認証をシームレスに伝搬できるように、 セル環境内の保護された JAX-RS リソースを定義しました。これにより、 アプリケーション内でのユーザー ID およびパスワードの提供または管理は必要なくなります。

JAX-RS 1.1 では、以下のコード・スニペットは、JAX-RS クライアントの一部としてパッケージ化されているこのセキュリティー・ハンドラーの使用方法を示しています。
import org.apache.wink.client.Resource;
 import org.apache.wink.client.RestClient;
 import org.apache.wink.client.ClientConfig;
 import org.apache.wink.client.handlers.LtpaAuthSecurityHandler;

 ClientConfig config = new ClientConfig();
 LtpaAuthSecurityHandler secHandler = new LtpaAuthSecurityHandler();
 
 // Add this security handler to the handlers chain.
 config.handlers(secHandler);

 // Create the REST client instance. 
 RestClient client = new RestClient(config);

 // Create the resource instance that you want to interact with. 
 // Substitute a value representing your resource address
 resource =  
  client.resource("http://localhost:8080/path/to/resource");

// Now you are ready to begin calling your resource.
JAX-RS 2.0 では、以下のコード・スニペットは、JAX-RS クライアントの一部としてパッケージ化されているこのセキュリティー・ハンドラーの使用方法を示しています。
ClientBuilder cb = ClientBuilder.newBuilder();
Client c = cb.build();
c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");

String res = "";
res = c.target("http://" + serverIP + ":" + serverPort + "/" + moduleName + "/rest/ltpa")
                            .request()
c.close();
return res;

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
ファイル名:twbs_jaxrs_impl_securejaxrs_downstreamresource.html