ダウンストリーム 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 とパスワードを入力したり管理したりする必要はありません。

以下のステップを使用して、アプリケーションのビルド時に、ダウンストリーム・サーバーに対する JAX-RS セキュリティー・ハンドラーによるユーザー認証を構成します。
手順
タスクの結果
ダウンストリーム・リソースが呼び出されたときに、シングル・サインオンを使用してダウンストリーム呼び出しにユーザー認証をシームレスに伝搬できるように、 保護された JAX-RS リソースを定義しました。これにより、 アプリケーション内でのユーザー ID およびパスワードの提供または管理は必要なくなります。
例
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.

![[8.5.5.6 以降]](../ng_v8556.gif)
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;