Sun GlassFish Enterprise Server v3 管理ガイド

Enterprise Server のメッセージセキュリティーについて

「メッセージセキュリティー」により、サーバーはメッセージレイヤーで Web サービスの呼び出しと応答をエンドツーエンドで認証できます。セキュリティー情報がメッセージ内に挿入され、その情報が完全なメッセージとともにネットワークレイヤー経由でメッセージの送信先に届けられます。メッセージセキュリティーはトランスポートレイヤーセキュリティーと異なり、メッセージの伝送と保護を分離できるため、メッセージは伝送後も保護されたままとなります。

Enterprise Server 上に配備された Web サービスをセキュリティー保護するには、アプリケーションの配備先コンテナ、またはそのアプリケーションがサービスを提供する Web サービスエンドポイントのいずれかに対し、SOAP レイヤーメッセージセキュリティープロバイダとメッセージ保護ポリシーをバインドします。Enterprise Server のクライアント側コンテナで SOAP レイヤーメッセージセキュリティー機能を設定するには、クライアントコンテナ、またはクライアントアプリケーションによって宣言されたポータブルサービス参照のいずれかに対し、SOAP レイヤーメッセージセキュリティープロバイダとメッセージ保護ポリシーをバインドします。

メッセージレベルのセキュリティーは、Enterprise Server 全体に対して、または特定のアプリケーションやメソッドに対して設定できます。アプリケーションレベルでのメッセージセキュリティーの設定については、『Sun GlassFish Enterprise Server v3 Application Development Guide 』を参照してください。

ここでは、次のテーマを取り上げます。

セキュリティートークンとセキュリティーメカニズム

WS-Security は、Web サービスにセキュリティーを適用するための通信プロトコルを提供する仕様です。セキュリティーメカニズムはこの仕様を実装します。WSIT (Web Services Interoperability Technologies) は、WS-Security を実装して、メッセージが送信先のエンドポイントに達するまでに中間ノードを通過する場合でも、相互運用可能なメッセージコンテンツの完全性と機密性を提供します。WSIT によって提供される WS-Security は、既存のトランスポートレベルのセキュリティーに付加され、トランスポートレベルのセキュリティーもそのまま使用できます。Enterprise Server とともにインストールされる SOAP (Simple Object Access Protocol) レイヤーメッセージセキュリティープロバイダを使用すると、ユーザー名とパスワードのセキュリティートークンおよび X.509 証明書セキュリティートークンを利用して、SOAP Web サービスメッセージを認証および暗号化することができます。

認証プロバイダ

「認証レイヤー」とは、認証処理を実行する必要のあるメッセージレイヤーです。Enterprise Server は、SOAP レイヤーで Web サービスメッセージセキュリティーを適用します。サポートされている認証には次のタイプが含まれます。

Enterprise Server は、「認証プロバイダ」を呼び出して SOAP メッセージレイヤーセキュリティーを処理します。メッセージセキュリティープロバイダは、要求メッセージおよび応答メッセージに必要な認証のタイプなどの情報を提供します。Enterprise Server には、次のメッセージセキュリティープロバイダが用意されています。

「デフォルトサーバープロバイダ」は、特定のサーバープロバイダがバインドされていない任意のアプリケーションに対して呼び出されるサーバー側プロバイダを識別するために使用されます。

メッセージ保護ポリシー

「要求ポリシー」は、認証プロバイダが実行する要求処理に関連付けられた認証ポリシー要件を定義します。ポリシーはメッセージ送信者による順序で示されるので、「コンテンツのあと」ではメッセージ受信者が署名の検証前にメッセージを復号化することを意味します。「応答ポリシー」は、認証プロバイダが実行する応答処理に関連付けられた認証ポリシー要件を定義します。

メッセージ保護ポリシーは、要求メッセージの処理および応答メッセージの処理に対して定義されます。ポリシーは、ソース認証または受信者認証に関する要件として表現されます。プロバイダは、特定のメッセージセキュリティーメカニズムを適用することで、SOAP Web サービスメッセージにおけるメッセージ保護ポリシーを実現します。

要求および応答メッセージ保護ポリシーは、セキュリティープロバイダがコンテナ内に設定されるときに定義されます。また、アプリケーションやアプリケーションクライアントの Sun 固有の配備記述子内で、アプリケーション固有のメッセージ保護ポリシー (Web サービスのポートまたは処理の範囲でのポリシー) を設定することも可能です。メッセージ保護ポリシーを定義する場合は常に、クライアントの要求と応答に対するメッセージ保護ポリシーが、サーバー側の要求と応答に対するメッセージ保護ポリシーと同じである必要があります。アプリケーション固有のメッセージ保護ポリシーの定義については、『Sun GlassFish Enterprise Server v3 Application Development Guide』の第 5 章「Securing Applications」を参照してください。

アプリケーション固有の Web サービスセキュリティー

アプリケーション固有の Web サービスセキュリティー機能を (アプリケーション構築上で) 設定するには、対象アプリケーションの Sun 固有の配備記述子内で message-security-binding 要素を定義します。これらの message-security-binding 要素は、特定のセキュリティープロバイダまたはメッセージ保護ポリシーを Web サービスエンドポイントまたはサービス参照に関連付けるために使用されます。また、この要素を修飾することで、それらのプロバイダやポリシーが対応するエンドポイントまたは参照サービスの特定のポートやメソッドに適用されるようにすることも可能です。

アプリケーション固有のメッセージ保護ポリシーの定義については、『Sun GlassFish Enterprise Server v3 Application Development Guide』の第 5 章「Securing Applications」を参照してください。

メッセージセキュリティーの管理

Enterprise Server のインストール時に、SOAP レイヤーメッセージセキュリティープロバイダが Enterprise Server のクライアント側コンテナとサーバー側コンテナ内に設定され、コンテナまたはコンテナ内に配備された個々のアプリケーションまたはクライアントからバインドして利用できるようになります。インストール中、デフォルトのプロバイダには単純なメッセージ保護ポリシーが設定されます。このポリシーをコンテナまたはコンテナ内のアプリケーションまたはクライアントにバインドした場合、すべての要求メッセージと応答メッセージに含まれるコンテンツのソースが、XML デジタル署名によって認証されるようになります。

Enterprise Server の管理インタフェースを使用して、次の操作を実行できます。

アプリケーションクライアントコンテナの SOAP メッセージレイヤーセキュリティー構成でも、これと同様の管理操作を実行できます。Enterprise Server に配備されたすべての Web サービスアプリケーションを Web サービスセキュリティーで保護する場合は、「アプリケーションクライアントのメッセージセキュリティーの有効化」を参照してください。

Enterprise Server では、メッセージレイヤーセキュリティーはデフォルトで無効になっています。Enterprise Server でメッセージレイヤーセキュリティーを設定するには、「Web サービスのデフォルトメッセージセキュリティープロバイダの有効化」を参照してください。

ほとんどの場合、管理タスクを実行したあとに Enterprise Server を再起動する必要があります。特に、操作実行時に Enterprise Server にすでに配備されているアプリケーションに対して管理上の変更を適用する場合は、これに該当します。

メッセージセキュリティーのタスク

メッセージセキュリティーの一般的な実装タスクには、次のタスクの一部またはすべてが含まれます。

  1. バージョン 1.5.0 より前のバージョンの Java SDK を使用し、暗号化テクノロジを使用する場合は、JCE プロバイダを設定します。

  2. ユーザー名トークンを使用している場合は、ユーザーデータベースが適切なレルムに対して設定されていることを確認します。

    ユーザー名およびパスワードトークンを使用する場合は、適切なレルムを設定し、このレルムに対してユーザーデータベースを設定する必要があります。

  3. 必要に応じて証明書と非公開鍵を管理します。

  4. Enterprise Server のデフォルトのプロバイダを有効にします。

  5. 新しいメッセージセキュリティープロバイダを設定します。

メッセージセキュリティーのロール

Enterprise Server では、メッセージセキュリティー設定の主要責任者として、管理者とアプリケーション配備担当者が適任です。状況に応じて、アプリケーション開発者もこれに加わります。

システム管理者

システム管理者は、次のメッセージセキュリティータスクに責任を持ちます。

アプリケーション配備担当者

アプリケーション配備担当者は、次のメッセージセキュリティータスクに責任を持ちます。

アプリケーション開発者およびアセンブリ担当者

アプリケーション開発者およびアセンブリ担当者は、次のメッセージセキュリティータスクに責任を持ちます。

Web サービスのサンプルアプリケーション

Enterprise Server には、xms という名前のサンプルアプリケーションが用意されています。xms アプリケーションは、Java EE EJB エンドポイントと Java サーブレットエンドポイントの両方を使って実装された、単純な Web サービスです。両エンドポイントは同一のサービスエンドポイントインタフェースを共有しています。サービスエンドポイントインタフェースには、sayHello という処理のみが定義されています。この処理は、文字列の引数を 1 つ受け取り、その呼び出し引数の前に Hello を付加した String を返します。

xms サンプルアプリケーションは、Enterprise Server の WS-Security 機能を使って、既存の Web サービスアプリケーションをセキュリティー保護する方法を示すことを目的としています。サンプルに付属する手順では、Enterprise Server の WS-Security 機能を有効にして xms アプリケーションを保護する方法が説明されています。また、このサンプルは、「アプリケーション固有の Web サービスセキュリティー」アプリケーションで説明されているように、WS-Security 機能をアプリケーションに直接バインドする方法も示しています。

xms サンプルアプリケーションのコンパイル、パッケージ化、および実行については、『Sun GlassFish Enterprise Server v3 Application Development Guide』の第 5 章「Securing Applications」を参照してください。

xms サンプルアプリケーションは、as-install/samples/webservices/security/ejb/apps/xms/ にインストールされます。