この章では、Application Server で Web サービスのメッセージレイヤーセキュリティーを設定する方法について説明します。この章では、次の項目について説明します。
この章の一部の内容は、セキュリティーと Web サービスに関する基本概念の理解を前提としてます。この章を読む前にこれらの概念について学ぶには、「詳細情報」に記載されているリソースを参照してください。
「メッセージセキュリティー」を使用する場合、メッセージ内にセキュリティー情報が挿入され、その情報がメッセージとともにネットワークレイヤー経由でメッセージの送信先に届けられます。メッセージセキュリティーは、『J2EE 1.4 Tutorial』の「Security」の章で説明されているトランスポートレイヤーセキュリティーとは異なり、メッセージトランスポートからメッセージ保護を分離して伝送後もメッセージを保護されたままにするために使用することができます。
「Web Services Security: SOAP Message Security (WS-Security)」は、米国 Sun Microsystems, Inc. を含むすべての主要な Web サービステクノロジプロバイダによって共同開発された、相互運用可能な Web サービスセキュリティーを実現するための OASIS 国際標準です。WS-Security のメッセージセキュリティーメカニズムは、SOAP 経由で送信される Web サービスメッセージを XML 暗号化と XML デジタル署名を使ってセキュリティー保護する、というものです。WS-Security 仕様には、X.509 証明書、SAML アサーション、ユーザー名/パスワードなどの各種セキュリティートークンを使って SOAP Web サービスメッセージの認証および暗号化を実現する方法が規定されています。
WS-Security 仕様については、http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf を参照してください。
Application Server は、Web サービスのクライアント側コンテナとサーバー側コンテナにおいて、WS-Security 標準に対する統合化されたサポートを提供します。この機能は統合化されているため、Application Server のコンテナがアプリケーションに代わって Web サービスセキュリティーを適用します。また、そうしたセキュリティーで Web サービスアプリケーションを保護する際、アプリケーションの実装を変更する必要はありません。Application Server は、これを実現する目的で、SOAP レイヤーメッセージセキュリティープロバイダとメッセージ保護ポリシーを、コンテナおよびコンテナ内に配備されたアプリケーションにバインドする機能を提供しています。
Application Server でメッセージセキュリティー設定の主要責任者として期待されるのは、「システム管理者」ロールと「アプリケーション配備担当者」ロールです。場合によっては、「アプリケーション開発者」もその責任の一端を担うことがありますが、通常は、システム管理者またはアプリケーション配備者のいずれかのロールが既存アプリケーションをセキュリティー保護し、開発者が関与することも、実装が変更されることもありません。次の各節では、各種ロールの責任を定義します。
システム管理者は次の責任を負います。
Application Server 上のメッセージセキュリティープロバイダの設定。
ユーザーデータベースの管理。
キーストアおよびトラストストアファイルの管理。
暗号化を使用し、バージョン 1.5.0 より前のバージョンの Java SDK を実行している場合の JCE (Java Cryptography Extension) プロバイダの設定。
サンプルサーバーのインストール。ただし、これを行うのは、xms サンプルアプリケーションを使ってメッセージレイヤー Web サービスセキュリティーの使用方法を示す場合だけです。
システム管理者は、管理コンソールを使用してサーバーセキュリティーの設定を管理し、コマンド行ツールを使用して証明書データベースを管理します。Platform Edition の証明書と非公開鍵は、キーストア内に格納され、keytool を使って管理されます。Standard Edition と Enterprise Edition の証明書と非公開鍵は、NSS データベース内に格納され、certutil を使って管理されます。このマニュアルは主にシステム管理者を対象にしています。メッセージセキュリティータスクの概要については、「メッセージセキュリティーのための Application Server の設定」を参照してください。
アプリケーション配備担当者は次の責任を負います。
必要なすべてのアプリケーション固有メッセージ保護ポリシーをアプリケーションアセンブリ時に指定 (それらのポリシーが上流行程の役割 (開発者またはプログラマ) によって指定されていなかった場合)。
Sun 固有の配備記述子を変更し、アプリケーション固有メッセージ保護ポリシー情報 (message-security-binding 要素) を Web サービスエンドポイントとサービス参照に指定。
これらのセキュリティータスクについては、『Developers’ Guide』の「Securing Applications」の章で説明されています。この章へのリンクについては、「詳細情報」を参照してください。
アプリケーション開発者はメッセージセキュリティーを有効にできますが、そのようにする責任はありません。メッセージセキュリティーの設定をシステム管理者が行う場合、すべての Web サービスがセキュリティー保護されます。コンテナにバインドされているプロバイダまたは保護ポリシーと異なるものをアプリケーションにバインドする必要がある場合、アプリケーション配備担当者がメッセージセキュリティーの設定を行います。
アプリケーション開発者またはプログラマは次の責任を負います。
アプリケーション固有メッセージ保護ポリシーがアプリケーションで必要かどうかの判断。必要な場合、その必要なポリシーがアプリケーションアセンブリで指定されているかどうかの確認。それにはアプリケーション配備担当者に連絡します。
WS-Security 仕様は、セキュリティートークンを使って SOAP Web サービスメッセージを認証および暗号化するための拡張可能なメカニズムを提供します。Application Server とともにインストールされる SOAP レイヤーメッセージセキュリティープロバイダを使えば、ユーザー名 / パスワードセキュリティートークンと X.509 証明書セキュリティートークンによる SOAP Web サービスメッセージの認証と暗号化を行えます。Application Server の今後のリリースでは、SAML アサーションなどのほかのセキュリティートークンを採用したプロバイダも追加される予定です。
Application Server は、SOAP メッセージ内で「ユーザー名トークン」を使ってメッセージ「送信者」の認証 ID を確立します。パスワードが埋め込まれたユーザー名トークンを含むメッセージの受信者は、そのメッセージの送信者がそのトークンによって識別されるユーザーとして振る舞うことを許可されているかどうかを検証するために、その送信者がユーザーの秘密情報 (パスワード) を知っているかどうかを確認します。
ユーザー名トークンを使用する場合、有効なユーザーデータベースを Application Server 上に設定する必要があります。このトピックの詳細については、「レルムを編集する」を参照してください。
Application Server は、XML デジタル署名を使ってメッセージの「コンテンツ」に認証 ID をバインドします。クライアントはデジタル署名を使用して、呼び出し元 ID を確立します。この方法は、トランスポートレイヤーセキュリティーが使用されている場合に、基本認証または SSL クライアント証明書認証が同じ目的で使用される方法に類似しています。デジタル署名は、メッセージコンテンツのソースを認証するためにメッセージ受信者によって検証されます (このソースはメッセージ送信者と異なる可能性がある。)
デジタル署名を使用する場合、有効なキーストアおよびトラストストアファイルを Application Server 上に設定する必要があります。このトピックの詳細については、「証明書ファイルについて」を参照してください。
暗号化の目的は、対象読者だけが理解できるようにデータを変更することです。これは、元のコンテンツを暗号化された要素に置き換えることにより行われます。公開鍵暗号方式に関して言えば、暗号化はメッセージを読み取ることができる関係者の ID を確立するために使用されます。
暗号化を使用する場合は、暗号化をサポートする JCE プロバイダがインストールされている必要があります。このトピックの詳細については、「JCE プロバイダを設定する」を参照してください。
メッセージ保護ポリシーは、要求メッセージ処理と応答メッセージ処理に対して定義され、ソース認証または受信者認証に関する要件として表現されます。ソース認証ポリシーは、メッセージを送信したエンティティーまたはメッセージのコンテンツを定義したエンティティーの ID がメッセージ内で確立され、その ID をメッセージ受信者が認証できる、という要件を表します。受信者認証ポリシーは、メッセージを受信可能なエンティティーの ID をメッセージ送信者が確立できるようにメッセージが送信される、という要件を表します。プロバイダは、特定のメッセージセキュリティーメカニズムを適用することで、SOAP Web サービスメッセージにおけるメッセージ保護ポリシーを実現します。
要求と応答に対するメッセージ保護ポリシーが定義されるのは、特定のプロバイダがコンテナ内に設定される時です。また、アプリケーションまたはアプリケーションクライアントの Sun 固有の配備記述子内で、アプリケーション固有のメッセージ保護ポリシー (Web サービスのポートまたは操作の粒度でのポリシー) を設定することも可能です。いずれにせよ、メッセージ保護ポリシーを定義する場合、クライアントの要求と応答に対するメッセージ保護ポリシーは、サーバーのそれと一致する (等しい) 必要があります。アプリケーション固有のメッセージ保護ポリシーの定義方法の詳細については、『Developers’ Guide』の「Securing Applications」の章を参照してください。
次に、このマニュアルで使用する用語について説明します。これらの概念については、「メッセージセキュリティーのための Application Server の設定」でも説明しています。
認証レイヤー
「認証レイヤー」とは、認証処理を実行する必要のあるメッセージレイヤーです。Application Server は、SOAP レイヤーにおいて Web サービスメッセージセキュリティーを適用します。
認証プロバイダ
Application Server のこのリリースでは、Application Server は、「認証プロバイダ」を呼び出して SOAP メッセージレイヤーセキュリティーを処理します。
「クライアント側プロバイダ」は、署名またはユーザー名/パスワードを使って要求メッセージのソース ID を確立したり、対象の受信者だけがメッセージを参照できるように暗号化を使って要求メッセージを保護したりします。また、クライアント側プロバイダは、受信した応答を正常に復号化することで、その許可された受信者としてコンテナを確立したり、応答内のパスワードまたは署名を検証してその応答に関連付けられたソース ID を認証したりもします。Application Server 内に設定されているクライアント側プロバイダを使えば、ほかのサービスのクライアントとして機能するサーバー側コンポーネント (サーブレットと EJB コンポーネント) によって送信される要求メッセージと受信される応答メッセージを保護することができます。
「サーバー側プロバイダ」は、受信した要求を正常に復号化することで、その許可された受信者としてコンテナを確立したり、要求内のパスワードまたは署名を検証してその要求に関連付けられたソース ID を認証したりします。また、サーバー側プロバイダは、署名またはユーザー名/パスワードを使って応答メッセージのソース ID を確立したり、対象の受信者だけがメッセージを参照できるように暗号化を使って要求メッセージを保護したりもします。「サーバー側プロバイダ」を呼び出すのはサーバー側コンテナだけです。
デフォルトサーバープロバイダ
「デフォルトサーバープロバイダ」は、特定のサーバープロバイダがバインドされていない任意のアプリケーションに対して呼び出されるサーバープロバイダを識別するために使用されます。「デフォルトサーバープロバイダ」は「デフォルトプロバイダ」とも呼ばれます。
デフォルトクライアントプロバイダ
「デフォルトクライアントプロバイダ」は、特定のクライアントプロバイダがバインドされていない任意のアプリケーションに対して呼び出されるクライアントプロバイダを識別するために使用されます。
要求ポリシー
「要求ポリシー」は、認証プロバイダが実行する要求処理に関連付けられた認証ポリシー要件を定義します。ポリシーはメッセージ送信者の順序で送信されます。この順序では、コンテンツのあとで暗号化するという要件は、メッセージ受信者がメッセージの復号化を行なってから署名の検証を想定することを意味しています。
応答ポリシー
「応答ポリシー」は、認証プロバイダが実行する応答処理に関連付けられた認証ポリシー要件を定義します。ポリシーはメッセージ送信者の順序で送信されます。この順序では、コンテンツのあとで暗号化するという要件は、メッセージ受信者がメッセージの復号化を行なってから署名の検証を想定することを意味しています。
Application Server 上に配備された Web サービスをセキュリティー保護するには、アプリケーションの配備先コンテナ、またはそのアプリケーションがサービスを提供する Web サービスエンドポイントのいずれかに対し、SOAP レイヤーメッセージセキュリティープロバイダとメッセージ保護ポリシーをバインドします。Application Server のクライアント側コンテナで SOAP レイヤーメッセージセキュリティー機能を設定するには、クライアントコンテナ、またはクライアントアプリケーションによって宣言されたポータブルサービス参照のいずれかに対し、SOAP レイヤーメッセージセキュリティープロバイダとメッセージ保護ポリシーをバインドします。
Application Server のインストール時に、SOAP レイヤーメッセージセキュリティープロバイダが Application Server のクライアント側コンテナとサーバー側コンテナ内に設定され、コンテナまたはコンテナ内に配備された個々のアプリケーションまたはクライアントからバインドして利用できるようになります。インストール中、プロバイダにはある単純なメッセージ保護ポリシーが設定されます。このポリシーをコンテナまたはコンテナ内のアプリケーションまたはクライアントにバインドした場合、すべての要求メッセージと応答メッセージに含まれるコンテンツのソースが、XML デジタル署名によって認証されるようになります。
Application Server の管理インタフェースを使えば、既存のプロバイダをバインドして Application Server のサーバー側コンテナから利用できるようにしたり、プロバイダが適用するメッセージ保護ポリシーを変更したり、別のメッセージ保護ポリシーを備えた新しいプロバイダ設定を作成したりできます。これらの操作については、「セキュリティーに関する管理コンソールタスク」で定義しています。アプリケーションクライアントコンテナの SOAP メッセージレイヤーセキュリティー設定でも、これと同様の管理操作を実行できます。それらについては、「アプリケーションクライアントのメッセージセキュリティーを有効にする」で定義しています。
Application Server では、メッセージレイヤーセキュリティーはデフォルトで無効になっています。Application Server のメッセージレイヤーセキュリティーを設定するには、「メッセージセキュリティーのための Application Server の設定」に要約されている手順に従ってください。Application Server 上に配備されたすべての Web サービスアプリケーションを Web サービスセキュリティーで保護するには、「メッセージセキュリティーのプロバイダを有効にする」の手順に従ってください。
上記の手順 (Application Server の再起動が必要な場合もあり) を実行し終わると、Application Server 上に配備されたすべての Web サービスアプリケーションに Web サービスセキュリティーが適用されるようになります。
アプリケーション固有の Web サービスセキュリティー機能をアプリケーションアセンブリで設定するには、アプリケーションの Sun 固有の配備記述子内で message-security-binding 要素を定義します。これらの message-security-binding 要素は、特定のプロバイダまたはメッセージ保護ポリシーを Web サービスエンドポイントまたはサービス参照に関連付けるために使用されます。また、この要素を修飾することで、それらのプロバイダやポリシーが対応するエンドポイントまたは参照サービスの特定のポートやメソッドに適用されるようにすることも可能です。
アプリケーション固有のメッセージ保護ポリシーの定義方法の詳細については、『Developers’ Guide』の「Securing Applications」の章を参照してください。「詳細情報」に、この章へのリンクがあります。
Application Server には、xms という名前のサンプルアプリケーションが付属しています。xms アプリケーションは、J2EE EJB エンドポイントと Java サーブレットエンドポイントの両方を使って実装された、単純な Web サービスです。両エンドポイントは同一のサービスエンドポイントインタフェースを共有しています。このサービスエンドポイントインタフェースには、単一の操作 sayHello が定義されています。この操作は、文字列引数を 1 つ受け取り、その呼び出し引数の前に Hello が付加された String を返します。
xms サンプルアプリケーションは、Application Server の WS-Security 機能を使って既存の Web サービスアプリケーションをセキュリティー保護する方法を示す目的で提供されています。サンプルに付属する手順では、Application Server の WS-Security 機能を有効にして xms アプリケーションを保護する方法が説明されています。また、このサンプルは、WS-Security 機能をアプリケーションに直接バインドする方法 (「アプリケーション固有の Web サービスセキュリティーの設定」を参照) も示しています。
xms サンプルアプリケーションは次のディレクトリにインストールされます。install-dir/samples/webservices/security/ejb/apps/xms/。
xms サンプルアプリケーションのコンパイル、パッケージ化、および実行に関する詳細については、『Developers’ Guide』の「Securing Applications」の章を参照してください。
次の表は、メッセージ保護ポリシーの設定と、その結果として WS-Security SOAP メッセージセキュリティープロバイダによって実行されるメッセージセキュリティー処理を示したものです。
表 10–1 メッセージ保護ポリシーと WS-Security SOAP メッセージセキュリティー処理との対応づけ
メッセージ保護ポリシー |
結果として実行される WS-Security SOAP メッセージ保護処理 |
---|---|
auth-source="sender" |
メッセージに wsse:Security ヘッダーが格納され、そのヘッダー内に wsse:UsernameToken (パスワード付き) が格納されます。 |
auth-source="content" |
SOAP メッセージ本体のコンテンツが署名されます。メッセージに wsse:Security ヘッダーが格納され、そのヘッダー内にメッセージ本体の署名が ds:Signature として格納されます。 |
auth-source="sender" auth-recipient="before-content" または auth-recipient="after-content" |
SOAP メッセージ本体のコンテンツが暗号化され、その結果得られた xend:EncryptedData で置換されます。メッセージに wsse:Security ヘッダーが格納され、そのヘッダー内に wsse:UsernameToken (パスワード付き) と xenc:EncryptedKey が格納されます。xenc:EncryptedKey には、SOAP メッセージ本体の暗号化に使用した鍵が格納されます。この鍵は受信者の公開鍵で暗号化されます。 |
auth-source="content" auth-recipient="before-content" |
SOAP メッセージ本体のコンテンツが暗号化され、その結果得られた xend:EncryptedData で置換されます。xenc:EncryptedData が署名されます。メッセージに wsse:Security ヘッダーが格納され、そのヘッダー内に xenc:EncryptedKey と ds:Signature として格納されます。xenc:EncryptedKey には、SOAP メッセージ本体の暗号化に使用した鍵が格納されます。この鍵は受信者の公開鍵で暗号化されます。 |
auth-source="content" auth-recipient="after-content" |
SOAP メッセージ本体のコンテンツが、署名されたあと暗号化され、その結果得られた xend:EncryptedData で置換されます。メッセージに wsse:Security ヘッダーが格納され、そのヘッダー内に xenc:EncryptedKey と ds:Signature が格納されます。xenc:EncryptedKey には、SOAP メッセージ本体の暗号化に使用した鍵が格納されます。この鍵は受信者の公開鍵で暗号化されます。 |
auth-recipient="before-content" または auth-recipient="after-content" |
SOAP メッセージ本体のコンテンツが暗号化され、その結果得られた xend:EncryptedData で置換されます。メッセージに wsse:Security ヘッダーが格納され、そのヘッダー内に xenc:EncryptedKey が格納されます。xenc:EncryptedKey には、SOAP メッセージ本体の暗号化に使用した鍵が格納されます。この鍵は受信者の公開鍵で暗号化されます。 |
ポリシーを何も指定しない。 |
モジュールはセキュリティー処理を一切行いません。 |
Application Server は、SOAP 処理レイヤー内に統合化されたメッセージセキュリティープロバイダを使用して、メッセージセキュリティーを実装します。メッセージセキュリティープロバイダは、Application Server のその他のセキュリティー機能に依存します。
バージョン 1.5.0 より前のバージョンの Java SDK を使用し、暗号化技術を使用する場合は、JCE プロバイダを設定します。
JCE プロバイダの設定については、「JCE プロバイダを設定する」を参照してください。
ユーザー名トークンを使用する場合は、必要に応じてユーザーデータベースを設定します。ユーザー名およびパスワードトークンを使用する場合は、適切なレルムを設定し、このレルムに適切なユーザーデータベースを設定する必要があります。
ユーザーデータベースの設定については、「レルムを編集する」を参照してください。
必要に応じて証明書と非公開鍵を管理します。
証明書と非公開鍵の管理については、「証明書ファイルについて」を参照してください。
Application Server の機能の設定が完了し、メッセージセキュリティープロバイダがそれらの機能を使用できるようになると、Application Server とともにインストールされたプロバイダを有効にできます。その手順については、「メッセージセキュリティーのプロバイダを有効にする」を参照してください。
J2SE 1.4.x に付属している JCE (Java Cryptography Extension) プロバイダは、RSA 暗号化をサポートしていません。通常、WS-Security で定義されている XML 暗号化は RSA 暗号化に基づいているため、WS-Security を使って SOAP メッセージを暗号化するには、RSA 暗号化をサポートする JCE プロバイダをダウンロードおよびインストールする必要があります。
RSA は RSA Data Security, Inc. が開発した公開鍵暗号化技術です。この略語は、この技術の開発者である Rivest、Shamir、および Adelman を表しています。
Java SDK バージョン 1.5 で Application Server を実行している場合は、JCE プロバイダは正しく設定されています。Java SDK バージョン 1.4.x で Application Server を実行している場合は、次のようにJCE プロバイダを JDK 環境の一部として静的に追加できます。
JCE プロバイダの JAR (Java ARchive) ファイルをダウンロードし、インストールします。
次の URL で、RSA 暗号化をサポートする JCE プロバイダのリストが提供されています。http://java.sun.com/products/jce/jce14_providers.html。
JCE プロバイダの JAR ファイルを java-home/jre/lib/ext/ にコピーします。
Application Server を停止します。
Application Server を停止せずにこの手順の最後で再起動した場合、JCE プロバイダは Application Server に認識されません。
任意のテキストエディタで java-home/jre/lib/security/java.security プロパティーファイルを編集します。このファイルに、前述の手順でダウンロードした JCE プロバイダを追加します。
java.security ファイルに、このプロバイダを追加する詳細手順が含まれています。基本的には、類似したプロパティーを持つ場所に次の形式の行を追加する必要があります。
security.provider.n=provider-class-name |
この例では、n は、Application Server がセキュリティープロバイダを評価する際に使用する優先順位を示します。ここで追加した JCE プロバイダには、n を 2 に設定します。
たとえば、Legion of the Bouncy Castle JCE プロバイダをダウンロードした場合は、次のような行を追加します。
security.provider.2=org.bouncycastle.jce.provider. BouncyCastleProvider |
Sun セキュリティープロバイダが、値 1 の最高の優先順位に設定されていることを確認してください。
security.provider.1=sun.security.provider.Sun |
各レベルにセキュリティープロバイダがただ 1 つだけ設定されるように、ほかのセキュリティープロバイダのレベルを下位に調整します。
次に示す例は、必要な JCE プロバイダを提供し、既存のプロバイダを正しい位置に保持する java.security ファイルのサンプルです。
security.provider.1=sun.security.provider.Sun security.provider.2=org.bouncycastle.jce.provider. BouncyCastleProvider security.provider.3=com.sun.net.ssl.internal.ssl.Provider security.provider.4=com.sun.rsajca.Provider security.provider.5=com.sun.crypto.provider.SunJCE security.provider.6=sun.security.jgss.SunProvider |
ファイルを保存して、閉じます。
Application Server を再起動します。
メッセージセキュリティーを使用できるように Application Server を設定する手順のほとんどは、管理コンソールまたは asadmin コマンド行ツールを使用するか、あるいはシステムファイルを手動で編集することで実現できます。一般に、システムファイルの編集はお勧めできません。なぜなら、Application Server が適切に動作しなくなるような変更を間違って施してしまう可能性があるからです。したがって、できるだけ、管理コンソールによる Application Server の設定手順を最初に示し、その後に asadmin ツールコマンドによる手順を示しています。システムファイルを手動で編集する手順は、管理コンソールと asadmin に同等の方法が存在しない場合にだけ示しています。
メッセージレイヤーセキュリティーのサポートは、プラグイン可能な認証モジュールの形式で Application Server とそのクライアントコンテナに統合されています。Application Server では、メッセージレイヤーセキュリティーはデフォルトで無効になっています。次の各節では、メッセージセキュリティー設定とプロバイダを有効化、作成、編集、および削除する方法について、詳しく説明します。
「アプリケーションクライアントのメッセージセキュリティーを有効にする」
ほとんどの場合、上記の管理操作を実行したあとで Application Server を再起動する必要があります。特に、操作実行時に Application Server 上にすでに配備されていたアプリケーションに管理上の変更を適用したい場合に Application Server の再起動が必要となります。
Application Server 上に配備された Web サービスエンドポイントのメッセージセキュリティーを有効にするには、サーバー側でデフォルトで使用されるプロバイダを指定する必要があります。メッセージセキュリティーのデフォルトプロバイダを有効にする場合、Application Server 上に配備された Web サービスクライアントが使用するプロバイダも有効にする必要があります。クライアントが使用するプロバイダを有効にする方法については、「アプリケーションクライアントのメッセージセキュリティーを有効にする」を参照してください。
配備済みエンドポイントからの Web サービス呼び出しに対するメッセージセキュリティーを有効にするには、デフォルトクライアントプロバイダを指定する必要があります。Application Server のデフォルトクライアントプロバイダを有効にした場合、Application Server 内に配備されたエンドポイントから呼び出されるすべてのサービスが、メッセージレイヤーセキュリティー用に正しく設定されていることを確認する必要があります。
管理コンソールのツリーコンポーネントで、「設定」ノードを展開します。
設定するインスタンスを選択します。
「セキュリティー」ノードを展開します。
「メッセージセキュリティー」ノードを展開します。
「SOAP」ノードを選択します。
「メッセージセキュリティー」タブを選択します。
「メッセージセキュリティー設定の編集」ページで、特定のプロバイダがバインドされていないすべてのアプリケーションに対して、サーバー側で使用されるプロバイダとクライアント側で使用されるプロバイダを指定します。
それには、次の各オプションプロパティーを変更します。
デフォルトプロバイダ – 特定のサーバープロバイダがバインドされていない任意のアプリケーションに対して呼び出されるサーバープロバイダの ID。
デフォルトでは、Application Server に対して、プロバイダの設定は何も選択されていません。サーバー側のプロバイダを特定するには、ServerProvider を選択します。null オプションの選択は、サーバー側ではメッセージセキュリティープロバイダがデフォルトで何も呼び出されないことを意味します。
通常、このフィールドでは ServerProvider を選択します。
デフォルトクライアントプロバイダ – 特定のクライアントプロバイダがバインドされていない任意のアプリケーションに対して呼び出されるクライアントプロバイダの ID。
デフォルトでは、Application Server に対して、プロバイダの設定は何も選択されていません。クライアント側のプロバイダを特定するには、ClientProvider を選択します。null オプションの選択は、クライアント側ではメッセージセキュリティープロバイダがデフォルトで何も呼び出されないことを意味します。
通常、このフィールドでは null を選択します。ClientProvider は、Application Server 上に配備された Web サービスエンドポイントからの Web サービス呼び出しに適用するデフォルトプロバイダとメッセージ保護ポリシーを有効にする場合に選択します。
「保存」をクリックします。
特定のクライアントプロバイダまたはサーバープロバイダを有効にしたあとで、その有効になったプロバイダのメッセージ保護ポリシーを変更する場合には、「メッセージセキュリティープロバイダを設定する」を参照し、この手順で有効にしたメッセージセキュリティープロバイダを変更する方法を確認してください。
デフォルトサーバープロバイダを指定するには、次のコマンドを実行します。
asadmin set --user admin-user --port admin-port server-config.security-service.message-security-config.SOAP. default_provider=ServerProvider |
デフォルトクライアントプロバイダを指定するには、次のコマンドを実行します。
asadmin set --user admin-user --port admin-port server-config.security-service.message-security-config.SOAP. default_client_provider=ClientProvider |
プロバイダの再設定は通常、そのメッセージ保護ポリシーを変更するために行われますが、プロバイダのタイプ、実装クラス、およびプロバイダ固有の設定プロパティーも変更可能です。
管理コンソールのツリーコンポーネントで、「設定」ノードを展開します。
設定するインスタンスを選択します。
「セキュリティー」ノードを展開します。
「メッセージセキュリティー」ノードを展開します。
「SOAP」ノードを選択します。
「プロバイダ」タブを選択します。
編集するメッセージセキュリティープロバイダを選択します。
Application Server には ClientProvider と ServerProvider が付属しています。
「プロバイダ設定の編集」の「プロバイダ設定」セクションで、次のプロパティーが変更に使用できます。
プロバイダタイプ – client、server、または client-server を選択して、プロバイダがクライアント認証プロバイダ、サーバー認証プロバイダ、あるいはこの両方 (クライアント - サーバープロバイダ) のいずれかとして使用されるようにします。
クラス名 - プロバイダの Java 実装クラスを入力します。クライアント認証プロバイダは、com.sun.enterprise.security.jauth.ClientAuthModule インタフェースを実装する必要があります。サーバー側プロバイダは、com.sun.enterprise.security.jauth.ServerAuthModule インタフェースを実装する必要があります。プロバイダはどちらのインタフェースも実装可能ですが、プロバイダタイプに対応したインタフェースを実装している必要があります。
「プロバイダ設定の作成」ページの「要求ポリシー」セクションで、必要に応じて、次のオプションの値を入力します。
これらのプロパティーはオプションですが、指定されない場合、認証はメッセージの要求にまったく適用されません。
「要求ポリシー」は、認証プロバイダが実行する要求処理に関連付けられた認証ポリシー要件を定義します。ポリシーはメッセージ送信者の順序で送信されます。この順序では、コンテンツのあとで暗号化するという要件は、メッセージ受信者がメッセージの復号化を行なってから署名の検証を想定することを意味しています。
認証元– sender、content、または null (空白オプション) を選択して、メッセージレイヤー送信者認証 (ユーザー名、パスワードなど)、コンテンツ認証 (デジタル署名など) の要件を定義するか、あるいはメッセージの要求に認証を適用しないようにします。null が指定される場合、要求のソース認証は必須ではありません。
認証受信者– beforeContent または afterContent を選択し、XML 暗号化などを使用して、送信者に対する要求メッセージの受信者のメッセージレイヤー認証要件を定義します。値が指定されない場合、デフォルトでは afterContent に指定されます。
SOAP メッセージセキュリティープロバイダがメッセージ保護ポリシーに従った決定として実行されるアクションについては、「要求および応答ポリシー設定のアクション」を参照してください。
「プロバイダ設定の作成」ページの「応答ポリシー」セクションで、必要に応じて、次のオプションの値を入力します。
これらのプロパティーはオプションですが、指定されない場合、認証はメッセージの応答にまったく適用されません。
「応答ポリシー」は、認証プロバイダが実行する応答処理に関連付けられた認証ポリシー要件を定義します。ポリシーはメッセージ送信者の順序で送信されます。この順序では、コンテンツのあとで暗号化するという要件は、メッセージ受信者がメッセージの復号化を行なってから署名の検証を想定することを意味しています。
認証元 – sender、content、または null (空白オプション) を選択して、メッセージの応答に適用されるように、メッセージレイヤー送信者認証 (ユーザー名、パスワードなど) またはコンテンツ認証 (デジタル署名など) の要件を定義します。null が指定される場合、応答のソース認証は必須ではありません。
認証受信者 – beforeContent または afterContent を選択し、XML 暗号化などを使用して、送信者に対する応答メッセージの受信者のメッセージレイヤー認証要件を定義します。値が指定されない場合、デフォルトでは afterContent に指定されます。
SOAP メッセージセキュリティープロバイダがメッセージ保護ポリシーに従った決定として実行されるアクションについては、「要求および応答ポリシー設定のアクション」を参照してください。
「プロパティーを追加」ボタンをクリックして、プロパティーをさらに追加します。
Application Server に同梱されるプロバイダは、次に表示するプロパティーをサポートします。ほかのプロバイダが使用されている場合、プロパティーおよび有効な値の詳細については、該当するドキュメントを参照してください。
server.config – サーバー設定情報を収める XML ファイルのディレクトリおよびファイル名。たとえば、domain-dir/config/wss-server-config.xml。
「保存」をクリックします。
応答ポリシーを設定するには、次のコマンドの request を response に置き換えます。
要求ポリシーをクライアントに追加して、認証元を設定します。
asadmin set --user admin-user --port admin-port server-config.security-service.message-security-config.SOAP. provider-config.ClientProvider.request-policy.auth_source= sender | content |
要求ポリシーをサーバーに追加して、認証元を設定します。
asadmin set --user admin-user --port admin-port server-config.security-service.message-security-config.SOAP. provider-config.ServerProvider.request-policy.auth_source= sender | content |
要求ポリシーをクライアントに追加して、認証受信者を設定します。
asadmin set --user admin-user --port admin-port server-config.security-service.message-security-config.SOAP. provider-config.ClientProvider.request-policy.auth_recipient= before-content | after-content |
要求ポリシーをサーバーに追加して、認証受信者を設定します。
asadmin set --user admin-user --port admin-port server-config.security-service.message-security-config.SOAP. provider-config.ServerProvider.request-policy.auth_recipient= before-content | after-content |
既存のプロバイダを設定する場合は、「メッセージセキュリティープロバイダを設定する」の手順に従ってください。
管理コンソールのツリーコンポーネントで、「設定」ノードを展開します。
設定するインスタンスを選択します。
「セキュリティー」ノードを展開します。
「メッセージセキュリティー」ノードを展開します。
「SOAP」ノードを選択します。
「プロバイダ」タブを選択します。
「プロバイダ設定」ページで、「新規」をクリックします。
「プロバイダ設定の作成」ページの「プロバイダ設定」セクションで、次を入力します。
デフォルトプロバイダ – このフィールドの横にあるボックスをオンにして、新しいメッセージセキュリティープロバイダを、特定のプロバイダがバインドされていない任意のアプリケーションに対して呼び出されるプロバイダとして指定します。このプロバイダが、デフォルトクライアントプロバイダ、デフォルトサーバープロバイダ、その両方のいずれになるかは、「プロバイダタイプ」の値によって決まります。
プロバイダタイプ – client、server、または client-server を選択して、プロバイダがクライアント認証プロバイダ、サーバー認証プロバイダ、あるいはこの両方 (クライアント - サーバープロバイダ) のいずれかとして使用されるようにします。
プロバイダ ID - このプロバイダ設定の ID を入力します。この名前は「現在のプロバイダ設定」リストに表示されます。
クラス名 - プロバイダの Java 実装クラスを入力します。クライアント認証プロバイダは、com.sun.enterprise.security.jauth.ClientAuthModule インタフェースを実装する必要があります。サーバー側プロバイダは、com.sun.enterprise.security.jauth.ServerAuthModule インタフェースを実装する必要があります。プロバイダはどちらのインタフェースも実装可能ですが、プロバイダタイプに対応したインタフェースを実装している必要があります。
「プロバイダ設定の作成」ページの「要求ポリシー」セクションで、必要に応じて、次のオプションの値を入力します。
これらのプロパティーはオプションですが、指定されない場合、認証はメッセージの要求にまったく適用されません。
認証元– sender、content、または null (空白オプション) を選択して、メッセージレイヤー送信者認証 (ユーザー名、パスワードなど)、コンテンツ認証 (デジタル署名など) の要件を定義するか、あるいはメッセージの要求に認証を適用しないようにします。null が指定される場合、要求のソース認証は必須ではありません。
認証受信者– beforeContent または afterContent を選択し、XML 暗号化などを使用して、送信者に対する要求メッセージの受信者のメッセージレイヤー認証要件を定義します。値が指定されない場合、デフォルトでは afterContent に指定されます。
SOAP メッセージセキュリティープロバイダがメッセージ保護ポリシーに従った決定として実行されるアクションについては、「要求および応答ポリシー設定のアクション」を参照してください。
「プロバイダ設定の作成」ページの「応答ポリシー」セクションで、必要に応じて、次のオプションの値を入力します。
これらのプロパティーはオプションですが、指定されない場合、認証はメッセージの応答にまったく適用されません。
認証元 – sender、content、または null (空白オプション) を選択して、メッセージの応答に適用されるように、メッセージレイヤー送信者認証 (ユーザー名、パスワードなど) またはコンテンツ認証 (デジタル署名など) の要件を定義します。null が指定される場合、応答のソース認証は必須ではありません。
認証受信者 – beforeContent または afterContent を選択し、XML 暗号化などを使用して、送信者に対する応答メッセージの受信者のメッセージレイヤー認証要件を定義します。値が指定されない場合、デフォルトでは afterContent に指定されます。
SOAP メッセージセキュリティープロバイダがメッセージ保護ポリシーに従った決定として実行されるアクションについては、「要求および応答ポリシー設定のアクション」を参照してください。
「プロパティーを追加」ボタンをクリックして、プロパティーをさらに追加します。
Application Server に同梱されるプロバイダは、次に表示するプロパティーをサポートします。ほかのプロバイダが使用されている場合、プロパティーおよび有効な値の詳細については、該当するドキュメントを参照してください。
server.config – サーバー設定情報を収める XML ファイルのディレクトリおよびファイル名。たとえば、domain-dir/config/wss-server-config.xml。
「了解」をクリックしてこの設定を保存するか、「取消し」をクリックして保存しないで終了します。
create-message-security-provider
管理コンソールのツリーコンポーネントで、「設定」ノードを展開します。
設定するインスタンスを選択します。
「セキュリティー」ノードを展開します。
「メッセージセキュリティー」ノードを選択します。
削除する「メッセージセキュリティー設定」の左側のチェックボックスをクリックします。
「削除」をクリックします。
管理コンソールのツリーコンポーネントで、「設定」ノードを展開します。
設定するインスタンスを選択します。
「セキュリティー」ノードを展開します。
「メッセージセキュリティー」ノードを展開します。
「SOAP」ノードを選択します。
「プロバイダ」ページを選択します。
削除する「プロバイダ設定」の左側のチェックボックスをクリックします。
「削除」をクリックします。
delete-message-security-provider
クライアントプロバイダのメッセージ保護ポリシーは、通信相手となるサーバー側プロバイダのメッセージ保護ポリシーと等しくなるように設定する必要があります。Application Server のインストール時に設定された (しかしまだ有効化されていない) プロバイダでは、すでにそうなっています。
クライアントアプリケーションのメッセージセキュリティーを有効にするには、アプリケーションクライアントコンテナの Application Server 固有の設定を変更します。
クライアントコンテナ記述子に依存するすべてのクライアントアプリケーションを停止します。
テキストエディタで、domain-dir/config/sun-acc.xml に格納されている Sun アプリケーションクライアントコンテナ記述子を開きます。
このファイルに default-client-provider 要素を追加して、アプリケーションクライアントのデフォルトクライアントプロバイダを有効にします。
その他のコードは、クライアントアプリケーションのメッセージセキュリティーを有効にするコードを配置すべき場所を示すためにあります。実際のインストールでは、その他のコードが若干異なっている可能性があります。それらを変更しないでください。
<client-container> <target-server name="your-host" address="your-host" port="your-port"/> <log-service file="" level="WARNING"/> <message-security-config auth-layer="SOAP" default-client-provider="ClientProvider"> <provider-config class-name="com.sun.enterprise.security.jauth.ClientAuthModule" provider-id="ClientProvider" provider-type="client"> <request-policy auth-source="sender"/> <response-policy/> <property name="security.config" value="C:/Sun/AppServer/lib/appclient/wss-client-config.xml"/> </provider-config> </message-security-config> </client-container> |
また、クライアントコンテナ内に設定されたメッセージセキュリティープロバイダは、非公開鍵と信頼できる証明書にアクセスする必要もあります。それには、アプリケーションクライアントの起動スクリプト内で、次のシステムプロパティーに適切な値を指定します。
-Djavax.net.ssl.keyStore
-Djavax.net.ssl.trustStore
「要求および応答ポリシー」は、認証プロバイダが実行する要求および応答処理に関連付けられた認証ポリシー要件を定義します。ポリシーはメッセージ送信者の順序で送信されます。この順序では、コンテンツのあとで暗号化するという要件は、メッセージ受信者がメッセージの復号化を行なってから署名の検証を想定することを意味しています。
メッセージセキュリティーを実現するには、サーバーとクライアントの両方で要求ポリシーと応答ポリシーが有効化されている必要があります。クライアントおよびサーバーのポリシーを設定する場合は、クライアントポリシーがアプリケーションレベルのメッセージのバインドで要求および応答保護のサーバーポリシーと一致する必要があります。
アプリケーションクライアント設定の要求ポリシーを設定するには、「アプリケーションクライアントのメッセージセキュリティーを有効にする」の説明に従って、アプリケーションクライアントコンテナの Application Server 固有の設定を変更します。アプリケーションクライアント設定ファイル内で request-policy 要素と response-policy 要素を次のように追加することで、要求ポリシーを設定します。
その他のコードは参照用に用意されています。実際のインストールでは、その他のコードが若干異なっている可能性があります。それらを変更しないでください。
<client-container> <target-server name="your-host" address="your-host" port="your-port"/> <log-service file="" level="WARNING"/> <message-security-config auth-layer="SOAP" default-client-provider="ClientProvider"> <provider-config class-name="com.sun.enterprise.security.jauth.ClientAuthModule" provider-id="ClientProvider" provider-type="client"> <request-policy auth-source="sender | content" auth-recipient="after-content | before-content"/> <response-policy auth-source="sender | content" auth-recipient="after-content | before-content"/> <property name="security.config" value="install-dir/lib/appclient/wss-client-config.xml"/> </provider-config> </message-security-config> </client-container> |
auth-source の有効な値には、sender と content があります。auth-recipient の有効な値には、before-content と after-content があります。これらの値をさまざまに組み合わせた結果を記述した表については、「要求および応答ポリシー設定のアクション」を参照してください。
要求または応答ポリシーを指定しない場合は、この要素を空白のままにします。次に例を示します。
<response-policy/> |
Java 2 Standard Edition のセキュリティーの説明については、http://java.sun.com/j2se/1.4.2/docs/guide/security/index.html を参照してください。
『J2EE 1.4 Tutorial』の「Security」の章については、http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html を参照してください。
『 管理ガイド』の 第 9 章「セキュリティーの設定」。
『Developer’s Guide』の「Securing Applications」の章。
『Oasis Web Services Security: SOAP Message Security (WS-Security)』仕様については、http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf を参照してください。
『OASIS Web Services Security Username Token Profile 1.0』については、http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf を参照してください。
『OASIS Web Services Security X.509 Certificate Token Profile 1.0』については、http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0.pdf を参照してください。
XML-Signature Syntax and Processingドキュメントについては、http://www.w3.org/TR/xmldsig-core/ を参照してください。
XML Encryption Syntax and Processingドキュメントについては、http://www.w3.org/TR/xmlenc-core/ を参照してください。