IBM® Runtime Environment for Java™ API for RESTful Web Services (JAX-RS) は、Apache Wink プロジェクトから派生したサーブレットによって駆動されます。
WebSphere® Application Server 環境では、サーブレットのライフサイクルは Web コンテナーで管理されます。そのため、Web コンテナーが提供するセキュリティー・サービスを WebSphere Application Server にデプロイされた REST リソースに適用することができます。
このタスクについて
REST アプリケーションのアセンブルに使用したのと同じツールによって、セキュリティー制約を定義して REST リソースに追加できます。
これらの制約は、ご使用のアプリケーションと関連付けられている J2EE Web デプロイメント記述子で収集されます。次のリストで、デプロイメント記述子に含めることができるセキュリティー定義を説明します。
- 以下を含む、アプリケーションに統合された REST リソースの呼び出し時のユーザー認証
- REST リソースの URL パターンによる定義どおりのリソースの許可制御
- REST リソースの呼び出し時のトランスポートへの SSL の使用
- SecurityContext オブジェクトのプログラム的な使用によるユーザー ID およびロールの判断
Web コンテナーでサポートされるすべてのセキュリティー・メカニズム (Kerberos ベースの SPNEGO 認証メカニズムの使用も含む) は REST リソースに適用可能です。
手順
- 開発環境を構成します。
- JAX-RS アプリケーションの開発を開始する前に、クラスパスに JAX-RS ライブラリーを追加して開発環境をセットアップする必要があります。
- JAX-RS Web アプリケーションのリソースを定義します。
- リソースは、RESTful サービスの基本ビルディング・ブロックです。リソースは、静的または動的な更新データを含むことができます。オンライン書店アプリケーションのリソースの例には、書籍、書店からの注文、およびユーザーのコレクションが含まれます。ご使用のアプリケーションのリソースを識別することにより、サービスをさらに便利で開発しやすいものにできます。
- JAX-RS アプリケーションを構成します。
お客様のニーズに応じて、複数の方法で JAX-RS アプリケーションを構成できます。
Java Platform,
Enterprise Edition (Java EE)
6 の機能を活用するには、アノテーション・スキャン機能を使用します。
アノテーション・スキャンを使用することにより、JAX-RS javax.ws.rs.core.Application サブクラス
を省略したり、javax.ws.rs.core.Application サブクラスの定義を最低限にすることができます。
あるいは、IBM JAX-RS サーブレットおよびフィルターで有効な機能を
使用したい場合は、IBM JAX-RS サーブレットまたはフィルター
を指定できます。
JAX-RS バージョン 1.1 構成メソッドの 1 つを使用して、
アプリケーションで javax.ws.rs.core.Application サブクラスを省略したり、
すべての JAX-RS クラスを検索して使用するように JAX-RS ランタイム環境に通知するために
空のクラス・セットを返す javax.ws.rs.core.Application サブクラスをアプリケーションで
使用したりすることができます。
このメソッドは、アプリケーションの作成時に、関連するすべての JAX-RS クラスを
手動で javax.ws.rs.core.Application サブクラスに追加しなければならない手間を省略したい場合などに使用します。
特定の IBM JAX-RS サーブレットおよびフィルターを
指定することにより、特定の IBM JAX-RS の動作を
確実に利用することができます。例えば、IBM JAX-RS フィルターは、
同じ URL パターンの JAX-RS リソースと JavaServer Pages (JSP) ファイルを使用する Web アプリケーション
を開発する際に役立ちます。
オプションの web.xml ファイルの使用をサポートする JAX-RS V1.1 構成メソッド
がありますが、セキュリティー制約またはロールを指定したい場合や、web.xml ファイルを使用して
使用可能な他の機能を利用したい場合には、web.xml ファイルに情報を指定する必要があります。
JAX-RS アプリケーションを構成するには、以下の 3 つの方法のうち 1 つを選択します。
- JAX-RS 1.1 メソッドを
使用して JAX-RS アプリケーションを構成する
アノテーション・スキャン機能
または JAX-RS 1.1 構成メソッドを使用したい場合に、この方法を使用します。
アノテーション・スキャン機能を使用することにより、アプリケーションの可搬性を向上させたり、
構成コードの量を最小化したり、アプリケーション・コードを変更せずにアプリケーションを
動的に変更したりすることができます。
- JAX-RS サーブレット用 web.xml ファイルの構成
動作を変更するためにサーブレット初期設定パラメーターを使用して有効にする機能を指定したい場合、
および IBM JAX-RS サーブレットを確実に取得したい
場合に、この方法を使用します。サーブレットを使用する場合は、ベース URL に付加されるサーブレット・パスを web.xml ファイル内に
定義できます。
- JAX-RS フィルター用 web.xml ファイルの構成
さまざまな URL パターンの JSP、その他のサーブレットおよびフィルター、
および JAX-RS リソースがあり、フィルターを使用したい場合に、この方法を使用します。
有効な URL を示すフィルターを定義し、それらの URL でフィルターが起動されるように web.xml ファイルを
構成することができます。
- Web コンテナー内の JAX-RS アプリケーションを保護します。
- Web コンテナーに使用可能なセキュリティー・サービスを使用すると REST リソースを保護できます。このとき、ユーザー認証、トランスポート・セキュリティー、許可制御、およびユーザーからロールへのマッピングを定義するセキュリティー・メカニズムを構成します。
- アノテーションを使用して JAX-RS リソースを保護します。
- セキュリティー設定を指定するアノテーションを使用して、JAX-RS リソースを保護することができます。
@PermitAll、@DenyAll、および @RolesAllowed の各アノテーションを使用して、
web.xml ファイルに定義されているセキュリティー制約の構成をオーバーライドできます。
- (オプション) ダウンストリーム JAX-RS リソースを保護します。
- 認証に BasicAuth 方式を構成することと、
LTPA JAX-RS セキュリティー・ハンドラーを使用してユーザー認証のためのシングル・サインオンを活用することによって、
ダウンストリーム JAX-RS リソースを保護できます。
- (オプション) SSL を使用して JAX-RS クライアントを保護します。
- Secure Sockets Layer (SSL) トランスポート層セキュリティーを使用して、
JAX-RS アプリケーションと、アプリケーションを起動するクライアントとの間の
通信を保護できます。
- JAX-RS Web アプリケーションをアセンブルします。
- JAX-RS Web アプリケーション用に Java クラス・ファイルを開発し、JAX-RS サーブレットを使用可能するために web.xml ファイルを編集したら、アプリケーションをアセンブルできます。Web アプリケーションを Web アプリケーション・アーカイブ (WAR) パッケージにアセンブルします。必要に応じて、WAR パッケージをエンタープライズ・アーカイブ (EAR) パッケージにアセンブルできます。
- JAX-RS Web アプリケーションをデプロイします。
- JAX-RS Web アプリケーションをアセンブルしたら、Web アーカイブ (WAR) パッケージまたはエンタープライズ・アーカイブ (EAR) パッケージを、アプリケーション・サーバー上にデプロイする必要があります。
- セキュアな JAX-RS アプリケーションを管理します。
- 基本 HTTP 認証やロール・ベースの許可制約などのセキュリティー・メカニズムを REST リソースに実装した後、管理コンソールを使用して、定義済みのロールをユーザー、グループ、または特殊な対象にマッピングすることで JAX-RS アプリケーションを管理できます。
タスクの結果
セキュアな JAX-RS Web アプリケーションを開発し、アプリケーション・サーバー上にデプロイできました。管理コンソールを使用して、セキュアな JAX-RS アプリケーションを管理することも可能です。