![]() ![]() ![]() ![]() |
この章では、Web サービス セキュリティをコンフィグレーションする方法について説明します。
メッセージレベルのセキュリティでは、クライアント アプリケーションと、そのクライアントによって呼び出される Web サービスとの間の SOAP メッセージに、デジタル署名または暗号化 (あるいはその両方) を施すかどうかを指定します。複数の SOAP メッセージを交換するイベントにおいて、Web サービスとクライアント間の共有セキュリティ コンテキストを指定することもできます。メッセージレベルのセキュリティは以下を実現します。
簡単なメッセージレベルのセキュリティをコンフィグレーションする場合に実行する基本的な手順については、「簡単なメッセージレベルのセキュリティのコンフィグレーション : 主な手順」を参照してください。この節では、Web サービス実行時環境に対するメッセージレベルのセキュリティのコンフィグレーション、特定の Web サービスに対するメッセージレベルのセキュリティのコンフィグレーション、およびそのサービスを呼び出すクライアント アプリケーションのコーディング方法について説明します。
また、Web サービスをデプロイした後、実行時に Web サービスのメッセージレベルのセキュリティをコンフィグレーションすることもできます。詳細については、「Administration Console を使用した実行時のポリシー ファイルの関連付け」を参照してください。
注意 : | SOAP 添付ファイルに対しては、デジタル署名も暗号化も行えません。 |
WebLogic Web サービスには、2006 年 2 月 1 日付の以下の OASIS 標準 Web Services Security (WS-Security) 1.1 仕様が実装されています。
これらの仕様は、セキュリティ トークンの伝播、メッセージの整合性、およびメッセージの機密性を提供します。これらのメカニズムは、別々に使用 (たとえば、ユーザ認証でのユーザ名トークンの受け渡し) したり、組み合わせて使用 (たとえば、SOAP メッセージのデジタル署名と暗号化、認証でのユーザによる X.509 証明書の使用の指定) したりできます。
WebLogic Web サービスには Web Services Trust Language (WS-Trust) 仕様と Web Services Secure Conversation Language (WS-SecureConversation 1、2) 仕様も実装されています。これらが連携して Web サービスとそのクライアント (または別の Web サービスやスタンドアロンの Java クライアント アプリケーション) との間のセキュアな通信を提供します。具体的に言うと WS-SecureConversation 仕様には、セキュアな会話を実現するために、セキュリティ コンテキストの確立と共有のメカニズム、およびセキュリティ コンテキストからキーを派生するためのメカニズムが定義されています。セキュリティ コンテキストと派生キーを併用すると、交換の全体的なパフォーマンスやセキュリティの向上につながります。
WS-Policy 仕様では、Web サービスの制約や要件を表現するためのフレームワークが定義されています。これらの制約や要件は、ポリシー アサーションとして表現します。WS-SecurityPolicy では、WS-Policy で使用するセキュリティ ポリシー アサーションのセットが定義され、WSS: SOAP Message Security、WS-Trust、および WS-SecureConversation のコンテキストにおいてメッセージをどのように保護するかについて記述されています。Web サービスにメッセージレベルのセキュリティをコンフィグレーションするには、WS-SecurityPolicy 仕様に従って、セキュリティ ポリシー文を格納した 1 つまたは複数のポリシー ファイルを Web サービスにアタッチします。Web サービス実行時環境でのセキュリティ ポリシー ファイルの使用方法については、「メッセージレベルのセキュリティ コンフィグレーションでのポリシー ファイルの使用」を参照してください。Web Services SecurityPolicy 仕様は、今回の WebLogic Server のリリース時点でも最終版ではありません。このリリースの WebLogic Server ではサポートされていませんが、2007 年 2 月 21 日付の Web Services SecurityPolicy 1.2 ドラフトの各要素の詳細については、「サポートされない WS-SecurityPolicy 1.2 アサーション」を参照してください。
Web Services Security: SOAP Message Security 仕様の BEA 実装は、以下の使い方をサポートします。
1 つまたは複数のセキュリティ ポリシー ファイルを使用して、WebLogic Web サービスのメッセージレベルのセキュリティの詳細を指定します。WS-SecurityPolicy 仕様では、Web サービスのセキュリティ ポリシーを記述して通信するための、汎用的なモデルと XML 構文が提供されています。
注意 : | WS-SecurityPolicy 仕様が規定される前にリリースされた旧バージョンの WebLogic Server では、WS-Policy 仕様に基づき、BEA 独自のセキュリティ ポリシー スキーマを使用して記述されたセキュリティ ポリシー ファイルを使用していました。このリリースの WebLogic Server では、WS-SecurityPolicy 1.2 仕様に準拠するセキュリティ ポリシー ファイルと、BEA Web サービス セキュリティ ポリシー スキーマに準拠するセキュリティ ポリシー ファイル (WebLogic Server 9 から提供開始) の両方がサポートされています。パッケージ化されている WS-SecurityPolicy 1.2 セキュリティ ポリシー ファイルの詳細については、「WS-SecurityPolicy 1.2 ポリシー ファイルの使用」を参照してください。パッケージ化されている BEA Web サービス セキュリティ ポリシー スキーマ ファイルの詳細については、「BEA Web サービス セキュリティ ポリシー ファイル」を参照してください。 |
メッセージレベルのセキュリティに使用されるセキュリティ ポリシー ファイルは、オペレーションを呼び出した結果として発生する SOAP メッセージに対してデジタル署名または暗号化を行うかどうかの明記とその方法が記述された XML ファイルです。また、クライアント アプリケーションがユーザ名、SAML、または X.509 の各トークンを使用して自身を認証することの指定もできます。
ポリシー ファイルを Web サービスと関連付けるには、JWS ファイル内で @Policy
および @Policies
JWS アノテーションを使用します。Web サービスに関連付けることのできるポリシー ファイルの数に制限はありません。ただし、アサーションが互いに矛盾しないように管理者が確認する必要があります。ポリシー ファイルは、JWS ファイルのクラスレベルでも、メソッドレベルでも指定できます。
以下では、Web サービス セキュリティ ランタイム、特定の WebLogic Web サービス、および Web サービスのオペレーションを呼び出すクライアント アプリケーションに、簡単なメッセージレベルのセキュリティをコンフィグレーションする手順について説明します。このマニュアルでは、簡単なメッセージレベルのセキュリティを次のように定義します。
警告 : | それぞれの WebLogic Server インスタンスが別のコンピュータ上で動作しているクラスタに Web サービスをデプロイする場合は、テスト目的であっても、用意されているもの以外のキーストアおよびキー ペアを使用する必要があります。これは、デフォルトの WebLogic Server キーストア DemoIdentity.jks 内のキー ペアが、異なるマシン上で動作している WebLogic Server 間で同じになるという保証がないためです。デフォルトのキーストアを使用する場合は、デプロイされている Web サービスの WSDL で、これらのキーストアの 1 つから公開鍵が指定されますが、実際にはサービスの呼び出しは、別のコンピュータ上で実行されているサーバによって処理される可能性があり、この場合、サーバのプライベート キーは、公開されている公開鍵に一致せず、呼び出しが失敗してしまいます。この問題は、クラスタ内でデフォルトのキーストアとキー ペアを使用した場合に発生するものであり、独自のキーストアとキー ペアを使用することで簡単に解決されます。 |
上記のシナリオの一部に関する詳細と、簡単なメッセージレベルのセキュリティの使用例に基づいて Web サービス セキュリティを追加する使用例については、後半の節で説明します。
次の手順では、WebLogic Web サービスを実装する JWS ファイルがすでに作成済みであることを前提として、SOAP メッセージにデジタル署名と暗号化を行うようにそのファイルを更新します。また、Ant ビルド スクリプトを使用して Web サービスを反復的に開発することと、新しい情報で更新できる作業用の build.xml
ファイルがあることも前提となっています。さらに、保護されていない Web サービスを呼び出すクライアント アプリケーションも用意されているものとします。これらの前提条件が満たされていない場合は、以下を参照してください。
WebLogic Web サービスに対して簡単なメッセージレベルのセキュリティをコンフィグレーションするには、次の手順に従います。
@Policy
および @Policies
JWS アノテーションを追加して、Web サービス全体または特定のオペレーションにアタッチされるあらかじめパッケージ化されたポリシー ファイルを指定します。
ポリシー ファイルの指定方法については、「@Policy および @Policies アノテーションによる JWS ファイルの更新」を参照してください。
「WebLogic Web サービスの反復的な開発」を参照してください。
この手順には、Cert Gen ユーティリティまたは Sun Microsystems の keytool ユーティリティを使用できます。開発が目的の場合は、keytool
ユーティリティを使用すると簡単に開始できます。
「プライベート キー、デジタル証明書、信頼性のある認証局の取得」を参照してください。
証明書のキーを使用することで、暗号化とデジタル署名の双方ができるようになっていることを確認してください。WebLogic Server でクライアントの証明書が有効であることを確認する方法については、「WebLogic Server でクライアントの証明書を検証できることの確認」も参照してください。
警告 : | キーの長さは 1024 ビット以上にする必要があります。 |
この手順には、Sun Microsystems の keytool ユーティリティを使用できます。
「プライベート キー、デジタル証明書、信頼性のある認証局の取得」を参照してください。
「ユーザ、グループ、セキュリティ ロール」を参照してください。
「クライアントサイドのセキュリティ ポリシー ファイルの使用」を参照してください。
全般的な情報については、「Web サービスの呼び出し」を参照してください。
簡単なメッセージレベルのセキュリティの使用例に基づいて Web サービス セキュリティを追加する使用例については、以下の節を参照してください。
メッセージ保護された Web サービスの問題をデバッグする方法については、「システム プロパティを使用したメッセージレベルのセキュリティのデバッグ」を参照してください。
クライアントが SOAP リクエストのデジタル署名に使用し、WebLogic Server がクライアントへの SOAP 応答の暗号化に使用する X.509 証明書を WebLogic Server で検証できることを確認しておく必要があります。以下のいずれか 1 つを実行します。
詳細については、「SSL 証明書の検証」を参照してください。
JWS ファイルで @Policy
アノテーションおよび @Policies
アノテーションを使用して、Web サービスに 1 つまたは複数のポリシー ファイルがアタッチされていることを指定できます。これらのアノテーションは、クラス レベルまたはメソッド レベルのいずれかで使用できます。
@Policies
アノテーションは、複数の @Policy
アノテーションをグループ化するものです。複数のポリシー ファイルをクラスまたはメソッドにアタッチする場合は、@Policies
アノテーションを使用してください。ポリシー ファイルを 1 つだけアタッチする場合は、そのファイル自体に対して @Policy
を使用します。
@Policy
アノテーションでは、1 つのポリシー ファイル、その場所、ポリシーが SOAP のリクエスト メッセージ、応答メッセージ、またはその両方のいずれに適用されるか、およびそのポリシー ファイルをサービスの公開 WSDL にアタッチするかどうかを指定します。
警告 : | すべての JWS のアノテーションにあてはまることですが、@Policy アノテーションは実行時にはオーバーライドできません。つまり、開発時にアノテーションを使用して指定したポリシー ファイルが、常に Web サービスに関連付けられることになります。したがって、たとえば、関連付けられているポリシー ファイルは実行時に Administration Console で確認できますが、削除 (関連付けを解除) することはできません。ただし、「Administration Console を使用した実行時のポリシー ファイルの関連付け」で説明されているように、追加のポリシー ファイルを関連付けることは可能です。 |
uri
属性を使用して、ポリシー ファイルの場所を以下のように指定します。
policy:
プレフィックスとポリシー ファイルの名前を使用する。@Policy(uri="policy:Wssp1.2-Https-BasicAuth.xml")
あらかじめパッケージ化されているポリシー ファイルを使用する場合は、独自のファイルを作成したり、アクセス可能な場所にファイルをパッケージ化したりする必要はありません。このため、できる限り、あらかじめパッケージ化されているポリシー ファイルを使用することをお勧めします。
あらかじめパッケージ化されているポリシー ファイルで提供される、各種のメッセージレベルのセキュリティについては、「メッセージレベルのセキュリティ コンフィグレーションでのポリシー ファイルの使用」を参照してください。
@Policy(uri="../policies/MyPolicy.xml")
この例では、MyPolicy.xml
ファイルは、JWS ファイルを格納するディレクトリの policies
兄弟ディレクトリにあります。
この場合では、ポリシー ファイルは共有 J2EE ライブラリの META-INF/policies
または WEB-INF/policies
ディレクトリ内にあることが前提となっています。ライブラリをパッケージ化する際には、このディレクトリにポリシー ファイルを入れるようにしてください。
共有 J2EE ライブラリにあるポリシー ファイルを指定するには、次の例に示すように、policy:
プレフィックスとポリシー ファイルの名前を使用します。
@Policy(uri="policy:MySharedPolicy.xml")
共有ライブラリの作成、および Web サービスが共有のポリシー ファイルを見つけられるようにするための環境設定については、「共有 J2EE ライブラリおよびオプション パッケージの作成」を参照してください。
@Policy
アノテーションで以下の属性を設定することもできます。
次の例では、@Policy
および @Policies
JWS アノテーションの使い方を示します。該当する個所は太字で表示しています。
package wssp12.wss10;
import weblogic.jws.WLHttpTransport;import weblogic.jws.Policy;
import weblogic.jws.Policies;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.Oneway;
/**
* この Web サービスでは、WS-SecurityPolicy 1.2 を使用して、WS-Security 1.0 で
* 指定されているメッセージレベルのセキュリティを有効にする方法を示す。
*
* サービスでは、ユーザ名トークンを使用してクライアントを認証する。
* リクエスト メッセージと応答メッセージの両方を、X509 証明書を使用して署名および暗号化する。
*
*/@WebService(name="Simple", targetNamespace="http://example.org")
public class UsernameTokenPlainX509SignAndEncrypt {
@WLHttpTransport(contextPath="/wssp12/wss10",
serviceUri="UsernameTokenPlainX509SignAndEncrypt")
@Policy(uri="policy:Wssp1.2-Wss1.0-UsernameToken-Plain-X509-Basic256.xml")
@WebMethod
@Policies({
public String echo(String s) {
@Policy(uri="policy:Wssp1.2-SignBody.xml"),
@Policy(uri="policy:Wssp1.2-EncryptBody.xml")})
return s;
}
@WebMethod@Policies({
public String echoWithWsa(String s) {
@Policy(uri="policy:Wssp1.2-SignBody.xml"),
@Policy(uri="policy:Wssp1.2-Sign-Wsa-Headers.xml")})
return s;
}
@WebMethod
@Policy(uri="policy:Wssp1.2-SignBody.xml",
public void echoOneway(String s) {
direction=Policy.Direction.inbound)
@Oneway
System.out.println("s = " + s);
}
@WebMethod
@Policies({
@Policy(uri="policy:Wssp1.2-Wss1.0-X509-Basic256.xml",
})
direction=Policy.Direction.inbound),
@Policy(uri="policy:Wssp1.2-SignBody.xml",
direction=Policy.Direction.inbound)
@Oneway
public void echoOnewayX509(String s) {
System.out.println("X509SignEncrypt.echoOneway: " + s);
}
}
サンプルの次の部分は、Web サービスのバインディング ポリシーで、以下のポリシーを指定しています。
@WebService(name="Simple", targetNamespace="http://example.org")
@WLHttpTransport(contextPath="/wssp12/wss10",
serviceUri="UsernameTokenPlainX509SignAndEncrypt")
@Policy(uri="policy:Wssp1.2-Wss1.0-UsernameToken-Plain-X509-Basic256.xml")
サンプルでは、メソッド レベルで Web サービスにセキュリティ ポリシー ファイルがアタッチされています。指定されたポリシー ファイルは、WebLogic Server であらかじめパッケージ化されているファイルです。つまり、開発者が独自のファイルを作成したり、対応するアーカイブにファイルをパッケージ化したりする必要はありません。
Wssp1.2-SignBody.xml
ポリシー ファイルは、SOAP のリクエスト メッセージおよび応答メッセージの両方の本文と WebLogic システム ヘッダにデジタル署名が行われることを指定しています。Wssp1.2-EncryptBody.xml
ポリシー ファイルは、SOAP のリクエスト メッセージおよび応答メッセージの両方の本文が暗号化されることを指定しています。
「簡単なメッセージレベルのセキュリティのコンフィグレーション : 主な手順」で説明した、簡単なメッセージレベルのコンフィグレーション手順では、Web サービス ランタイムが WebLogic Server に用意されているプライベート キーと X.509 証明書のペアを使用することが前提となっています。SSL 用のコア セキュリティ サブシステムでも同じキー ペアが使用されます。このキー ペアは主にデモまたはテスト目的用に用意されています。プロダクション環境では、Web サービス ランタイムは通常、独自のプライベート キーとデジタル証明書のペアを 2 つ使用します。1 つは SOAP メッセージの署名用、もう 1 つは SOAP メッセージの暗号化用です。
以下では、これらを使用できるようにするための追加の手順について説明します。
必須ではありませんが、WebLogic Web サービスのみが使用するペアを 2 つ取得することをお勧めします。両方の証明書のキーの用途がコンフィグレーションの目的と一致していることを確認してください。たとえば、証明書を暗号化に使用するように指定する場合は、証明書のキーの用途が暗号用として指定されているか、または用途が定義されていないことを確認します。そうでない場合、Web サービス セキュリティ ランタイムによって証明書が拒否されます。
警告 : | キーの長さは 1024 ビット以上にする必要があります。 |
この手順には、Cert Gen ユーティリティまたは Sun Microsystems の keytool ユーティリティを使用できます。開発が目的の場合は、keytool
ユーティリティを使用すると簡単に開始できます。
「プライベート キー、デジタル証明書、信頼性のある認証局の取得」を参照してください。
SSL 用に WebLogic Server をすでにコンフィグレーションしてある場合は、この手順で使用できる ID キーストアがすでに作成されています。
この手順には、WebLogic の ImportPrivateKey
ユーティリティと、Sun Microsystems の keytool ユーティリティを使用できます。開発が目的の場合は、keytool
ユーティリティを使用すると簡単に開始できます。
「キーストアの作成およびプライベート キーと信頼性のある認証局のキーストアへのロード」を参照してください。
「プロダクション用のキーストアのコンフィグレーション」を参照してください。
default_wss
にする必要があります。デフォルトの Web サービス セキュリティ コンフィグレーションは、別のコンフィグレーションを使用するように明示的にプログラミングされていない限り、ドメイン内のすべての Web サービスで使用されます。
「Web サービス セキュリティ コンフィグレーションの作成」を参照してください。
「SOAP メッセージに署名する際に使用されるキー ペアの指定」を参照してください。この手順では、キーストアとキー ペアの識別に使用されるプロパティを作成するときに各プロパティの正確な値 (IntegrityKeyStore
、IntegrityKeyStorePassword
など) を [名前] フィールドに入力します。ただし、独自に作成したキーストアとキー ペアを識別する値は [値] フィールドに入力します。
「SOAP メッセージの暗号化に使用されるキー ペアの指定」を参照してください。この手順では、キーストアとキー ペアの識別に使用されるプロパティを作成するときに、各プロパティの正確な値 (ConfidentialityKeyStore
、ConfidentialityKeyStorePassword
など) を [名前] フィールドに入力します。ただし、独自に作成したキーストアとキー ペアを識別する値は [値] フィールドに入力します。
メッセージ保護された Web サービスを呼び出すように Java コードを更新する場合には、クライアントのキーストアからプライベート キーとデジタル証明書のペアをロードし、その情報を、セキュリティ ポリシーで必要とされている場合はユーザ認証用のユーザ名およびパスワードとともに、呼び出されるセキュアな WebLogic Web サービスに渡す必要があります。
Web サービスのセキュリティ ポリシー ファイルで SOAP リクエストを暗号化するように指定されている場合、Web サービス クライアント ランタイムはサービスの WSDL にアタッチされているセキュリティ ポリシー ファイルからサーバの証明書を自動的に取得し、それを暗号化に使用します。ただし、ポリシー ファイルが WSDL にアタッチされていない場合や、WSDL 自体を使用できない場合には、クライアント アプリケーションはポリシー ファイルのクライアントサイドのコピーを使用する必要があります。詳細については、「クライアントサイドのセキュリティ ポリシー ファイルの使用」を参照してください。
コード リスト 3-2 では、「セキュリティ関連アノテーションでの JWS ファイルの更新」の JWS ファイルで記述されているメッセージ保護された WebLogic Web サービスを呼び出す Java クライアント アプリケーションを示します。クライアント アプリケーションは、以下の 5 つの引数を取ります。
サンプル クライアント アプリケーションのセキュリティ固有のコードは太字で表示し、サンプルの後で説明します。
package examples.webservices.security_jws.client;
import weblogic.security.SSL.TrustManager;
import weblogic.xml.crypto.wss.provider.CredentialProvider;
import weblogic.xml.crypto.wss.WSSecurityContext;
import weblogic.wsee.security.bst.ClientBSTCredentialProvider;
import weblogic.wsee.security.unt.ClientUNTCredentialProvider;
import javax.xml.rpc.Stub;
import java.util.List;
import java.util.ArrayList;
import java.security.cert.X509Certificate;
/**
* Copyright (c) 2005 by BEA Systems. All Rights Reserved.
*/
public class SecureHelloWorldClient {
public static void main(String[] args) throws Throwable {
//ユーザ名トークンのユーザ名またはパスワード
String username = args[0];
String password = args[1];
//クライアントのプライベート キー ファイル
String keyFile = args[2];
//クライアントの証明書
String clientCertFile = args[3];
String wsdl = args[4];
SecureHelloWorldService service = new SecureHelloWorldService_Impl(wsdl + "?WSDL" );
SecureHelloWorldPortType port = service.getSecureHelloWorldServicePort();
//資格プロバイダを作成し、それをスタブに設定する
List credProviders = new ArrayList();
//クライアントサイドの BinarySecurityToken 資格プロバイダ -- x509
CredentialProvider cp = new ClientBSTCredentialProvider(clientCertFile, keyFile);
credProviders.add(cp);
//クライアントサイドの UsernameToken 資格プロバイダ
cp = new ClientUNTCredentialProvider(username, password);
credProviders.add(cp);
Stub stub = (Stub)port;
stub._setProperty(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders);
stub._setProperty(WSSecurityContext.TRUST_MANAGER,
new TrustManager(){
public boolean certificateCallback(X509Certificate[] chain, int validateErr){
return true;
}
} );
String response = port.sayHello("World");
System.out.println("response = " + response);
}
}
TrustManager
API をインポートする。import weblogic.security.SSL.TrustManager;
import weblogic.xml.crypto.wss.provider.CredentialProvider;
import weblogic.xml.crypto.wss.WSSecurityContext;
import weblogic.wsee.security.bst.ClientBSTCredentialProvider;
import weblogic.wsee.security.unt.ClientUNTCredentialProvider;
ClientBSTCredentialProvider
WebLogic API を使用して、クライアントの証明書とプライベート キーからバイナリ セキュリティ トークン資格プロバイダを作成する。CredentialProvider cp =
new ClientBSTCredentialProvider(clientCertFile, keyFile);
ClientUNTCredentialProvider
WebLogic API を使用して、クライアントのユーザ名とパスワードからユーザ名トークンを作成する。ユーザ名とパスワードは WebLogic Server によっても認識されます。cp = new ClientUNTCredentialProvider(username, password);
WSSecurityContext.CREDENTIAL_PROVIDER_LIST
プロパティを使用して、バイナリ セキュリティ トークンおよびユーザ名トークンを含む List
オブジェクトを JAX-RPC スタブに渡す。stub._setProperty(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders)
weblogic.security.SSL.TrustManager
WebLogic セキュリティ API を使用して、SOAP リクエストの暗号化に使用される証明書が有効かどうかを確認する。Web サービス クライアント ランタイムは Web サービスのデプロイされた WSDL からこの証明書を取得します。プロダクションの際には、この証明書は自動的には信頼されないので、クライアント アプリケーションでは、その証明書を使用して SOAP リクエストを暗号化する前に、証明書が有効であることを確認する必要があります。stub._setProperty(WSSecurityContext.TRUST_MANAGER,
new TrustManager(){
public boolean certificateCallback(X509Certificate[] chain, int validateErr){
return true;
}
} );
このサンプルでは、クライアントサイドの TrustManager API が示されています。Web サービス アプリケーションには、セキュリティを確保するため、適切な検証コードを実装する必要があります。
「簡単なメッセージレベルのセキュリティのコンフィグレーション : 主な手順」で説明した、簡単な Web サービスのコンフィグレーション手順では、スタンドアロンのクライアント アプリケーションがメッセージ保護された Web サービスを呼び出すことが前提となっています。ただし、クライアント自体が EJB、サーブレット、または別の Web サービスの一部として、WebLogic Server インスタンスで実行されている場合もあります。この場合には、WebLogic Server コア セキュリティ フレームワークを使用して資格プロバイダとトラスト マネージャをコンフィグレーションして、EJB、サーブレット、または JWS コードには保護されたオペレーションの簡単な呼び出しのみが含まれ、他のセキュリティ関連の API の使用は含まれないようにできます。以下では、この場合に WebLogic Server コア セキュリティ フレームワークを使用するための高度な手順について説明します。
CredentialProvider
オブジェクトを作成せず、セキュアな Web サービスのホストである WebLogic Server からの証明書を検証するための TrustManager
コア セキュリティ API も使用しないようにします。クライアント コードでこれらの API を使用しない理由は、Web サービス ランタイムによってこの作業が実行されるためです。注意 : | WebLogic Server には、ユーザ名/パスワードおよび X.509 用の資格マッピング プロバイダがあります。ただし、デフォルトでコンフィグレーションされているのはユーザ名/パスワードのみです。 |
用意されている資格プロバイダとトラスト マネージャをクライアント アプリケーションで使用しない場合は、この手順で説明したように WebLogic Server コア セキュリティ フレームワークをコンフィグレーションする必要はありません。「クライアントサイドのセキュリティ ポリシー ファイルの使用」で説明されているスタンドアロンの Java コードと同じ API を EJB、サーブレット、および JWS コードで使用することで、そのコンフィグレーションをすべてオーバーライドできます。ただし、コア セキュリティ フレームワークを使用することで、WebLogic Server のコンフィグレーションが標準化され、Web サービスを呼び出すクライアント アプリケーションの Java コードが簡略化されます。
WebLogic Server には、ほとんどのプログラマの通常のセキュリティ ニーズを満たすため、あらかじめパッケージ化された Web サービス セキュリティ ポリシー ファイルがいくつか用意されています。ただし、追加のコンフィグレーションが必要な場合は、独自の WS-SecurityPolicy ファイルを作成して使用することもできます。セキュリティ ポリシー ファイルについての全般的な情報、およびメッセージレベルのセキュリティ コンフィグレーションでセキュリティ ポリシー ファイルを使用する方法については、「メッセージレベルのセキュリティ コンフィグレーションでのポリシー ファイルの使用」を参照してください。
カスタム ポリシー ファイルを作成する場合には、あらかじめパッケージ化されているファイルと同じように 3 つの主なセキュリティ カテゴリ (認証、暗号化、および署名) を 3 つの別々のポリシー ファイルに分けることもできますし、3 つのカテゴリすべてを含む 1 つのポリシー ファイルを作成することもできます。また、認証など 1 つのカテゴリだけを変更するカスタム ポリシー ファイルを作成し、その他のカテゴリについてはあらかじめパッケージ化されているファイル (Wssp1.2-SignBody.xml
および Wssp1.2-EncryptBody
) を使用することもできます。つまり、Web サービスに関連付けるポリシー ファイルの数および内容は、適宜組み合わせることができます。ただしこの場合は、それらの複数のファイルが互いに矛盾していないことを常に確認する必要があります。
カスタム ポリシー ファイルは、WS-SecurityPolicy 1.2 に定義されている標準の形式およびアサーションに準拠している必要があります。ただし、このリリースの WebLogic Server は、WS-SecurityPolicy 1.2 を完全に実装しているわけではない点に注意してください。詳細については、「サポートされない WS-SecurityPolicy 1.2 アサーション」を参照してください。WS-SecurityPolicy ファイルのルート要素は <Policy>
でなければなりません。また、この要素には次のネームスペース宣言が含まれている必要があります。
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512"
>
あらかじめパッケージ化されている WS-SecurityPolicy ファイルをテンプレートとして使用して、独自のカスタム ファイルを作成することもできます。「WS-SecurityPolicy 1.2 ポリシー ファイルの使用」を参照してください。
WebLogic Server では、セキュリティ ポリシー内に使用できる転送レベルのアサーションが複数ある場合は、https を必要とするポリシーが使用されます。2 つ以上のポリシー選択肢が https を必要とする場合は、そのいずれかがランダムに選択されます。したがって、転送レベルのポリシー アサーションが混在する複数のポリシー選択肢を使用しないようにする必要があります。
セキュリティ コンテキストおよび派生キーをコンフィグレーションする場合は、BEA 提供のあらかじめパッケージ化された 3 つの WS-SecurityPolicy ファイル (Wssp1.2-Wssc200502-Bootstrap-Https.xml
、Wssp1.2-Wssc200502-Bootstrap-Wss1.0.xml
、および Wssp1.2-Wssc200502-Bootstrap-Wss1.1.xml
) を使用できます。これらのファイルは、WS-SecureConversation 1.2 (2005/2) 仕様に準拠しています。必要な機能と一般的なデフォルト値のほとんどが、これらのセキュリティ ポリシー ファイルで提供されるので、セキュリティ コンテキストをコンフィグレーションする場合には、これらのあらかじめパッケージ化されたファイルを使用することをお勧めします。これらのファイルの詳細については、「WS-SecureConversation 2005/2 ポリシー」を参照してください。
警告 : | クラスタに対して共有のセキュリティ コンテキストを使用する Web サービスをデプロイしている場合、クラスタ間のセッション ステート レプリケーションもコンフィグレーションする必要があります。詳細については、「クラスタのフェイルオーバとレプリケーション」を参照してください。 |
WS-SecureConversation は、クラスタ内の特定の WebLogic Server インスタンスに固定されています。SecureConversation リクエストが間違ったサーバに届くと、自動的に正しいサーバに転送されます。WS-SecureConversation をホストするサーバ インスタンスに障害が発生した場合は、そのサーバ インスタンスが回復するまで SecureConversation を使用できなくなります。
Web サービスの呼び出し時にセキュリティ コンテキストのネゴシエーションを行うクライアント アプリケーションは、メッセージ保護された Web サービスを呼び出す標準的なクライアント アプリケーションに似ています。詳細については、「クライアントサイドのセキュリティ ポリシー ファイルの使用」を参照してください。本質的には、セキュアなコンテキスト トークンを明示的にキャンセルするために、weblogic.wsee.security.wssc.utils.WSSCClientUtil API を使用できるという点だけが異なっています。
注意 : | WebLogic Server には、ユーザの利便性だけを目的として WSSCCLientUtil API が用意されています。この Web サービス ランタイムでは、コンフィグレーションされたタイムアウトに到達するとセキュアなコンテキスト トークンが自動的にキャンセルされます。この API は、トークンをキャンセルする時期をより厳密に制御する必要がある場合にのみ使用します。 |
コード リスト 3-3 に、セキュアな会話を実現するため、あらかじめパッケージ化されているセキュリティ ポリシー ファイルに関連付けられた Web サービスを呼び出す単純なクライアント アプリケーションのサンプルを示します。セキュリティ コンテキストに関連する太字で表された部分については、このサンプルの後で説明します。
package examples.webservices.wssc.client;
import weblogic.security.SSL.TrustManager;
import weblogic.xml.crypto.wss.provider.CredentialProvider;
import weblogic.xml.crypto.wss.WSSecurityContext;
import weblogic.wsee.security.bst.ClientBSTCredentialProvider;
import weblogic.wsee.security.bst.StubPropertyBSTCredProv;import weblogic.wsee.security.wssc.utils.WSSCClientUtil;
import weblogic.wsee.security.util.CertUtils;
import javax.xml.rpc.Stub;
import java.util.List;
import java.util.ArrayList;
import java.security.cert.X509Certificate;
/**
* Copyright (c) 2004 by BEA Systems. All Rights Reserved.
*/
public class WSSecureConvClient {
public static void main(String[] args) throws Throwable {
String clientKeyStore = args[0];
String clientKeyStorePass = args[1];
String clientKeyAlias = args[2];
String clientKeyPass = args[3];
String serverCert = args[4];
String wsdl = args[5];
WSSecureConvService service = new WSSecureConvService_Impl(wsdl);
WSSecureConvPortType port = service.getWSSecureConvServicePort();
// 資格プロバイダを作成し、それをスタブに設定する
List credProviders = new ArrayList();
// x509 を使用して wssc ハンドシェークを保護する
credProviders.add(new ClientBSTCredentialProvider(clientKeyStore, clientKeyStorePass, clientKeyAlias, clientKeyPass));
Stub stub = (Stub)port;
stub._setProperty(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders);stub._setProperty(StubPropertyBSTCredProv.SERVER_ENCRYPT_CERT, CertUtils.getCertificate(serverCert));
stub._setProperty(WSSecurityContext.TRUST_MANAGER,
new TrustManager(){
public boolean certificateCallback(X509Certificate[] chain, int validateErr){
// サーバの証明書を信頼できるかどうかの検証に必要
return true;
}
}
);
System.out.println (port.sayHelloWithWSSC("Hello World, once"));
System.out.println (port.sayHelloWithWSSC("Hello World, twice"));
System.out.println (port.sayHelloWithWSSC("Hello World, thrice"));
//呼び出しの終了後に SecureContextToken をキャンセルするWSSCClientUtil.terminateWssc(stub);
}
System.out.println("WSSC terminated!");
}
import weblogic.wsee.security.wssc.utils.WSSCClientUtil;
stub._setProperty(StubPropertyBSTCredProv.SERVER_ENCRYPT_CERT, CertUtils.getCertificate(serverCert));
WSSClientUtil
クラスの terminateWssc()
メソッドを使用して、セキュアなコンテキスト トークンを終了する。WSSCClientUtil.terminateWssc(stub);
「簡単なメッセージレベルのセキュリティのコンフィグレーション : 主な手順」で説明した、簡単なメッセージレベルのコンフィグレーション手順では、Web サービスを実装する JWS ファイルで @Policy
および @Policies
JWS アノテーションを使用して、サービスに関連付けられている 1 つまたは複数のポリシー ファイルを指定する方法について説明しています。つまり、これは Web サービスのプログラミング時には Web サービスとそのオペレーションに関連付けるポリシー ファイルをあらかじめ認識しておく必要があることを示します。しかし、常にあらかじめポリシー ファイルを認識できるとは限りません。そのため、Web サービスをデプロイした後で Administration Console を使用して実行時にポリシー ファイルを関連付けることもできます。
JWS ファイルで @Policy
JWS アノテーションも @Policies
JWS アノテーションも使用せずに、Administration Console を使用して実行時にポリシー ファイルを関連付けることもでき、これらのアノテーションを使用して一部のポリシー ファイルを指定し、追加の WS-Policy ファイルを実行時に関連付けることもできます。ただし、いったん JWS アノテーションを使用してポリシー ファイルを関連付けると、その関連付けは実行時に Administration Console を使用して変更することはできません。
Administration Console では、ファイル内のポリシー アサーションが互いに矛盾していても、JWS アノテーションに関連付けられているポリシー ファイル内のアサーションと矛盾していても、実行時にポリシー ファイルを Web サービスやそのオペレーションにいくつでも関連付けることができます。ただし、関連付けられた複数のポリシー ファイルが連携できるように、管理者が確認する必要があります。何らかの矛盾がある場合は、クライアント アプリケーションが Web サービスのオペレーションを呼び出すときに、WebLogic Server から実行時エラーが返されます。
Administration Console を使用して実行時にポリシー ファイルを関連付ける詳細な手順については、「WS-Policy ファイルと Web サービスとの関連付け」を参照してください。
「簡単なメッセージレベルのセキュリティのコンフィグレーション : 主な手順」で説明した、簡単な Web サービスのコンフィグレーション手順では、ユーザがユーザ名トークンを使用して自身を認証することが前提となっています。WebLogic Server は Web Services Security 仕様の Web Services Security: SAML Token Profile を実装しているため、この節で説明するように、ユーザは Web サービスのオペレーションの呼び出し時に SOAP メッセージで SAML トークンを使用して自身を認証することもできます。
SAML トークンの使用はサーバ間で機能します。つまり、ある WebLogic Server インスタンスで実行されているクライアント アプリケーションが、ID として SAML を使用して別の WebLogic Server インスタンスで実行されている Web サービスを呼び出します。クライアント アプリケーション自体が Web サービスであるため、Web サービス セキュリティ ランタイムによってすべての SAML プロセスが処理されます。
ID として SAML トークンを要求するように Web サービスをコンフィグレーションする場合には、以下のいずれかの確認メソッドを指定できます。
これらの確認メソッドの詳細については、「WebLogic Web サービスでの SAML トークン プロファイルのサポート」および Web Services Security: SAML Token Profile 仕様そのものを参照してください。
注意 : | この節では、読者が SAML の基礎と、SAML を WebLogic Server のコア セキュリティに関連付ける方法を理解していることを前提としています。全般的な情報については、「SAML (Security Assertion Markup Language)」を参照してください。 |
注意 : | 次の手順では、「簡単なメッセージレベルのセキュリティのコンフィグレーション : 主な手順」での手順がすでに実行されていることを前提として、ユーザ名トークンではなく、SAML トークンを ID として使用できるようにします。 |
SAML トークンを ID として使用するには、次の手順に従います。
sender-vouches
または holder-of-key
) によって変わります。なお、このリリースの WebLogic Server では、WS-SecurityPolicy 1.2 ポリシー ファイルでの SAML の使用はサポートされていません。代わりに、BEA セキュリティ ポリシー スキーマに従って記述されたセキュリティ ポリシー ファイルを使用する必要があります。正確な構文は、コンフィグレーションする確認メソッドの種類 (sender-vouches
または holder-of-key
) によって変わります。
sender-vouches 確認メソッドを指定するには、次の作業を行います。
<Identity><SupportedTokens>
要素の <SecurityToken>
子要素を作成し、TokenType
属性を SAML トークンの使用を示す値に設定する。<SecurityToken>
要素の <Claims><Confirmationmethod>
子要素を追加し、sender-vouches
を指定する。<?xml version="1.0"?>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
>
<wssp:Identity>
<wssp:SupportedTokens>
<wssp:SecurityToken
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID
">
<wssp:Claims>
<wssp:ConfirmationMethod>sender-vouches</wssp:ConfirmationMethod>
</wssp:Claims>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Identity>
</wsp:Policy>
holder-of-key 確認メソッドを指定するには、次の作業を行います。
<Integrity><SupportedTokens>
要素の <SecurityToken>
子要素を作成し、TokenType
属性を SAML トークンの使用を示す値に設定する。
holder-of-key
確認メソッドのための <Integrity>
アサーションに SAML トークンを含めるのは、Web サービス ランタイムで sender-vouches
では必要でないメッセージの整合性の証明が必要なためです。
<SecurityToken>
要素の <Claims><Confirmationmethod>
子要素を追加し、holder-of-key
を指定する。<?xml version="1.0"?>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part">
<wssp:Integrity>
<wssp:SignatureAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<wssp:CanonicalizationAlgorithm
URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<wssp:Target>
<wssp:DigestAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#sha1" />
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:SupportedTokens>
<wssp:SecurityToken
IncludeInMessage="true"
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID
">
<wssp:Claims>
<wssp:ConfirmationMethod>holder-of-key</wssp:ConfirmationMethod>
</wssp:Claims>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Integrity>
</wsp:Policy>
<KeyInfo>
アサーションで指定されている X.509 証明書を検証する。SAML holder-of-key アサーション使用時にこの検証を無効化するには、SAML トークン ハンドラ上にプロパティを設定することで、Web サービスと関連付けられた Web サービス セキュリティ コンフィグレーションを指定する必要があります。Administration Console でこれを行う方法については、「SAML holder_of_key アサーション使用時の X.509 証明書の検証の無効化」を参照してください。
独自のセキュリティ ポリシー ファイルの作成の詳細については、「カスタム ポリシー ファイルの作成と使用」を参照してください。アサーションのリファレンス情報については、「BEA Web サービス セキュリティ ポリシー アサーションのリファレンス」を参照してください。
@Policy
アノテーションを更新して、前の手順で作成したセキュリティ ポリシー ファイルを指定します。たとえば、Web サービスのすべてのオペレーションの呼び出しで SAML を ID として使用する場合は、@Policy
アノテーションをクラスレベルで指定します。
Web サービスに関連付けるポリシー ファイルは、互いに矛盾しない限り、適宜組み合わせることができます。ただし、OASIS WS-SecurityPolicy 1.2 ファイルと、BEA のセキュリティ ポリシー スキーマに従って記述されたセキュリティ ポリシー ファイルを組み合わせることはできません。たとえば、SAML の ID としての使用を指定する <Identity>
セキュリティ アサーションのみを含む、簡単な MyAuth.xml
ファイルを作成し、あらかじめパッケージ化されている Wssp1.2-EncryptBody.xml
ファイルおよび Wssp1.2-SignBody.xml
ファイルとともにそのファイルを Web サービスに関連付けることができます。ただし、関連付けられた複数のポリシー ファイルが互いに矛盾しないように、管理者が確認する必要があります。何らかの矛盾がある場合は、実行時エラーが発生するか、または Web サービスが想定どおりに動作しなくなるおそれがあります。
「WebLogic Web サービスの反復的な開発」を参照してください。
前述の使用例の多くでは、Administration Console を使用した、デフォルトの Web サービス セキュリティ コンフィグレーションの作成 (名前は default_wss
) が必要になります。このコンフィグレーションの作成後は、@weblogic.jws.security.WssConfiguration
JWS アノテーションを使用しなくても、属性のない状態でこのアノテーションを指定しても、すべての Web サービスにこのコンフィグレーションが適用されます。
ただし、指定するタイムスタンプ値をサービス間で変える場合など、Web サービスをデフォルト以外のセキュリティ コンフィグレーションに関連付ける必要が生じる場合もあります。
Web サービスをデフォルト以外のセキュリティ コンフィグレーションに関連付けるには、次の手順に従います。
default_wss
以外の名前が指定された Web サービス セキュリティ コンフィグレーションを作成します。@WssConfiguration
アノテーションを追加して、このセキュリティ コンフィグレーションの名前を指定します。詳細と例については、「weblogic.jws.security.WssConfiguration」を参照してください。警告 : | 同じ Web アプリケーションに追加の Web サービスをパッケージ化する予定があり、それらの Web サービスでも @WssConfiguration アノテーションを使用する場合は、各 Web サービスに同じセキュリティ コンフィグレーションを指定する必要があります。詳細については、「weblogic.jws.security.WssConfiguration」を参照してください。 |
「WebLogic Web サービスの反復的な開発」を参照してください。
警告 : | すべての Web サービス セキュリティ コンフィグレーションで同じパスワード ダイジェストの使用を指定する必要があります。使用するパスワード ダイジェストが Web サービス セキュリティ コンフィグレーション間で異なると、実行時エラーが発生します。 |
次の表に、メッセージ保護された Web サービスの問題をデバッグするために設定できるシステム プロパティをまとめます。
「メッセージレベルのセキュリティ コンフィグレーションでのポリシー ファイルの使用」では、Web サービスのメッセージレベルのセキュリティを記述する 1 つまたは複数のセキュリティ ポリシー ファイルに、WebLogic Web サービスを関連付ける方法について説明しています。これらのポリシー ファイルは、SOAP メッセージのデジタル署名やデジタル暗号化の方法と、Web サービスを呼び出すクライアントで必要になるユーザ認証の種類を記述する XML ファイルです。通常、Web サービスに関連付けられたポリシー ファイルはその WSDL にアタッチされます。Web サービス クライアント ランタイムはこれを読み取り、クライアント アプリケーションから呼び出されたオペレーションからの SOAP メッセージ リクエストのデジタル署名やデジタル暗号化を行うかどうかを判別したり、行う場合はその方法を判別したりします。
しかし、Web サービスがデプロイ済みの WSDL にポリシー ファイルをアタッチしない場合や、Web サービスが WSDL をまったくエクスポーズしないようにコンフィグレーションされている場合もあります。これらの場合、Web サービス クライアント ランタイムは、SOAP メッセージ リクエストのために有効にしなければならないセキュリティをサービス自体から判別することはできません。代わりに、ポリシー ファイルのクライアントサイドのコピーをロードする必要があります。この節では、クライアント アプリケーションを更新して、ポリシー ファイルのローカル コピーがロードされるようにする方法について説明します。
通常、クライアントサイドのポリシー ファイルは、デプロイ済みの Web サービスに関連付けられているポリシー ファイルとまったく同じものです。これら 2 つのファイルが異なり、ファイルに含まれるセキュリティ アサーションに矛盾がある場合は、Web サービス オペレーションを呼び出すとエラーが返されます。
クライアントサイドのポリシー ファイルは、SOAP メッセージのリクエスト、応答、またはその両方に関連付けることができます。また、ポリシー ファイルを Web サービス全体と関連付けるのか、Web サービスのオペレーションのうちの 1 つだけと関連付けるのかを指定できます。
次の手順では、Web サービス オペレーションを呼び出すクライアント アプリケーションにセキュリティ ポリシー ファイルを関連付ける高度な手順を説明します。
デプロイされた Web サービスを呼び出すクライアント アプリケーションを作成済みであり、クライアントサイドのポリシー ファイルを関連付けることでクライアント アプリケーションを更新することを想定しています。また、Ant ベースの開発環境を設定済みであり、かつ clientgen
Ant タスクを実行するためのターゲットを含む、作業用の build.xml
ファイルがあることが前提となっています。「スタンドアロン クライアントからの Web サービスの呼び出し : 主な手順」を参照してください。
セキュリティ ポリシー ファイルの作成の詳細については、「カスタム ポリシー ファイルの作成と使用」を参照してください。
clientgen
Ant タスクが JAX-RPC スタブ内に追加の get
XXX
Port()
メソッドを生成するように指定し、クライアント アプリケーションをビルドする build.xml
ファイルを更新します。XXX
は Web サービスの名前です。これらのメソッドは、後ほどクライアント アプリケーションがクライアントサイドのポリシー ファイルをロードする際に使用します。
「ポリシー ファイルをロードするメソッドを生成するための clientgen の更新」を参照してください。
clientgen
Ant タスクによって生成された追加の get
XXX
Port()
メソッドでクライアントサイドのポリシー ファイルがロードされるようにします。
「ポリシー ファイルをロードするためのクライアント アプリケーションの更新」を参照してください。
prompt> ant build-client
次回クライアント アプリケーションを実行したときには、ポリシー ファイルのローカル コピーがロードされ、Web サービス クライアント ランタイムはこれを使用して SOAP リクエスト メッセージのセキュリティを有効にします。
注意 : | すでにセキュリティ ポリシーが設定されている Web サービス オペレーション (たとえば、サーバ ポリシーからクライアントを生成する際に格納された WSDL ファイル内で設定された Web サービス オペレーション) が存在する場合、この手順に従ってクライアントサイドのセキュリティ ポリシーをプログラム的に設定すると、それ以前に存在していたポリシーはすべて削除されます。 |
clientgen
Ant タスクの generatePolicyMethods
属性を true
に設定して、Ant タスクが追加の getXXX()
メソッドを JAX-RPC Service
インタフェースの実装内に生成するように指定し、ポートの取得時にポリシー ファイルのクライアントサイド コピーがロードされるようにします。次に例を示します。
<clientgen
wsdl="http://ariel:7001/policy/ClientPolicyService?WSDL"
destDir="${clientclass-dir}"
generatePolicyMethods="true"
packageName="examples.webservices.client_policy.client"/>
生成される追加のメソッドの詳細、およびクライアント アプリケーションでのそれらのメソッドの使用方法については、「ポリシー ファイルをロードするためのクライアント アプリケーションの更新」を参照してください。
clientgen
で generatePolicyMethods="true"
に設定すると、Ant タスクはポリシー ファイルのロードに使用できる JAX-RPC Service
インタフェースの実装内に追加メソッドを生成します。XXX
は Web サービスの名前です。ポリシー ファイルの配列または集合を、Web サービスへの複数ファイルの関連付けに使用できます。単一のポリシー ファイルのみを関連付ける場合は、単一メンバーの配列または集合を作成します。
get
XXX
Port(String operationName, java.util.Set<java.io.InputStream> inbound, java.util.Set<java.io.InputStream> outbound)
クライアントサイドのポリシー ファイルの別個の 2 つの集合を、InputStreams からロードし、1 つ目の集合を SOAP リクエストに関連付け、2 つ目を SOAP 応答に関連付けます。最初のパラメータで指定されているように、特定のオペレーションに適用されます。
get
XXX
Port(String operationName, java.io.InputStream[] inbound, java.io.InputStream[] outbound)
クライアントサイドのポリシー ファイルの別個の 2 つの配列を、InputStreams からロードし、1 つ目の配列を SOAP リクエストに関連付け、2 つ目を SOAP 応答に関連付けます。最初のパラメータで指定されているように、特定のオペレーションに適用されます。
get
XXX
Port(java.util.Set<java.io.InputStream> inbound, java.util.Set<java.io.InputStream> outbound)
クライアントサイドのポリシー ファイルの別個の 2 つの集合を、InputStreams からロードし、1 つ目の集合を SOAP リクエストに関連付け、2 つ目を SOAP 応答に関連付けます。Web サービスのすべてのオペレーションに適用されます。
get
XXX
Port(java.io.InputStream[] inbound, java.io.InputStream[] outbound)
クライアントサイドのポリシー ファイルの別個の 2 つの配列を、InputStreams からロードし、1 つ目の配列を SOAP リクエストに関連付け、2 つ目を SOAP 応答に関連付けます。Web サービスのすべてのオペレーションに適用されます。
Web サービスのポートを取得すると同時に、そのポートを使用するすべてのオペレーションまたは指定されたオペレーションの呼び出しに対してポリシー ファイル (群) が関連付けられるようにするには、パラメータのない通常の getXXXPort()
メソッドではなく、これらのメソッドを使用します。
注意 : | 前のリリースの WebLogic Server からの以下のメソッドは、非推奨となっています。単一のクライアントサイドポリシー ファイルの関連付けを行う場合は、単一メンバーの配列または集合を指定し、上述の対応するメソッドを使用します。 |
get
XXX
Port(java.io.InputStream policyInputStream);
単一のクライアントサイドポリシー ファイルを InputStream からロードし、SOAP リクエスト (着信) メッセージおよび SOAP 応答 (発信) メッセージの両方に追加します。
get
XXX
Port(java.io.InputStream policyInputStream, boolean inbound, boolean outbound);
単一のクライアントサイド ポリシー ファイルを InputStream
からロードし、2 番目および 3 番目のパラメータのブール値に応じて、SOAP リクエスト メッセージまたは SOAP 応答メッセージのどちらかに適用します。
コード リスト 3-4 では、単純なクライアント アプリケーションでこれらのポリシー メソッドの使用例を示します。コードの太字部分については、後ほど説明を加えます。
package examples.webservices.client_policy.client;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.Stub;
import java.io.FileInputStream;
import java.io.IOException;
/**
* ClientPolicyService Web サービスの sayHello オペレーションを呼び出す
* 簡単なスタンドアロンのクライアント アプリケーション
*
* @author Copyright (c) 2004 by BEA Systems. All Rights Reserved.
*/
public class Main {
public static void main(String[] args)
throws ServiceException, RemoteException, IOException {
FileInputStream [] inbound_policy_array = new FileInputStream[2];
inbound_policy_array[0] = new FileInputStream(args[1]);
inbound_policy_array[1] = new FileInputStream(args[2]);
FileInputStream [] outbound_policy_array = new FileInputStream[2];
outbound_policy_array[0] = new FileInputStream(args[1]);
outbound_policy_array[1] = new FileInputStream(args[2]);
ClientPolicyService service = new ClientPolicyService_Impl(args[0] + "?WSDL");
// Web サービスのポートを取得する標準的な方法ClientPolicyPortType normal_port = service.getClientPolicyPort();
// 特定のオペレーションのリクエストと応答のためのポリシー ファイル
// の配列を指定するClientPolicyPortType array_of_policy_port = service.getClientPolicyPort("sayHello", inbound_policy_array, outbound_policy_array);
try {
String result = null;result = normal_port.sayHello("Hi there!");
System.out.println( "Got result: " + result );
result = array_of_policy_port.sayHello("Hi there!");
} catch (RemoteException e) {
throw e;
}
}
}
クライアント アプリケーションに対する 2 つ目と 3 つ目の引数は、アプリケーションが FileInputStreams
の配列 (inbound_policy_array
および outbound_policy_array
) を作成する元となる 2 つのポリシー ファイルです。normal_port
はポートの取得にパラメータのない標準的なメソッドを使用します。一方、array_of_policy_port
はポリシー メソッドの 1 つを使用します。このポリシーメソッドで、ポートを使用する sayHello
オペレーションの呼び出しでは複数のポリシー ファイル (FileInputStream
の配列で指定) が、着信および発信の SOAP リクエストおよび応答と関連付けられていることを指定します。
ClientPolicyPortType array_of_policy_port = service.getClientPolicyPort("sayHello", inbound_policy_array, outbound_policy_array);
WebLogic Server には、ほとんどの Web サービス アプリケーションで使用できる WS-SecurityPolicy ファイルがいくつか用意されています。格納されている場所は、BEA_HOME/WL_HOME/server/lib/weblogic.jar
内の
/weblogic/wsee/policy/runtime
です。
これらのセキュリティ ポリシー ファイルは、OASIS WS-SecurityPolicy 1.2 仕様に準拠しており、次のネームスペースを備えています。
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512"
>
注意 : | このリリースの WebLogic Server には、WebLogic Server 9 で初めて提供された 5 つのセキュリティ ポリシー ファイルも含まれています。これらのファイルは、BEA Web サービス セキュリティ ポリシー スキーマに従って記述されています。これらのセキュリティ ポリシー ファイルのネームスペースは次のとおりです (詳細については「BEA Web サービス セキュリティ ポリシー ファイル」を参照してください)。 |
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
>
以下の節では、使用可能な WS-SecurityPolicy 1.2 ポリシー ファイルについて説明します。
それぞれの Web サービス実装に最も適したセキュリティ ポリシーを選択する方法については「ポリシーの選択」および「適切なポリシーの選択」を参照してください。また、このリリースの WebLogic Server でサポートされない WS-SecurityPolicy 1.2 要素については、「サポートされない WS-SecurityPolicy 1.2 アサーション」を参照してください。
転送レベルのポリシーでは、WSDL へのアクセスおよび Web サービス オペレーションの呼び出しに、https
プロトコルを使用する必要があります。
保護アサーションは、保護の対象とレベルを特定するために使用します。保護アサーション ポリシーは単独では使用できず、X.509 トークン ポリシーと組み合わせることによってのみ使用できます。たとえば、Wssp1.2-SignBody.xml
と Wssp1.2-Wss1.1-X509-Basic256.xml
を組み合わせて使用します。以下のポリシー ファイルは、署名および暗号化によって、メッセージ部分の保護を提供します。
以下のポリシーでは、WS-Security 1.0 のユーザ名トークン仕様および X509 トークン仕様がサポートされます。
以下のポリシーでは、WS-Security 1.1 のユーザ名トークン仕様および X509 トークン仕様がサポートされます。
以下のポリシーには、WS-SecureConversation 2005/2 が実装されています。
WebLogic Server は、WS-SecurityPolicy 1.2 を実装したことで、セキュリティ ポリシーの幅広い選択肢を提供できるようになりました。Web サービスのセキュリティ ポリシーを選択する際は、以下の面での要件を考慮する必要があります。
Wssp1.2-Https-*.xml
) は、メッセージレベルのセキュリティが必要ない場所にのみ使用する。
カスタム ポリシーを作成すると、単一の Web サービスに複数のポリシー選択肢をコンフィグレーションできます。実行時には、適用されるポリシーがそれらの中から自動的に選択されます。その際は、サポートされていないポリシーやアサーションが衝突しているポリシーが除外され、受信メッセージの検証と応答メッセージの構築に適したポリシーが選択されます。たとえば、単一の Web サービスに、WS-Security 1.0 または WS-Security 1.1 のリクエストを処理するセキュリティ ポリシーをコンフィグレーションできます。
コード リスト 3-5 に、WS-Security 1.0 と WS-Security 1.1 の両方をサポートするセキュリティ ポリシーのサンプルを示します。各ポリシー選択肢は、<wsp:All> 要素で囲まれています。
<?xml version="1.0"?>
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512">
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/Never">
<wsp:Policy>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:ProtectTokens/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:Wss10>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
</wsp:All>
<wsp:All>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token11/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token11/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:ProtectTokens/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Web Services SecurityPolicy 仕様は、今回の WebLogic Server のリリース時点でも最終版ではありません。このリリースの WebLogic Server の WS-SecurityPolicy 実装は、2006 年 6 月 19 日付の OASIS WS-SecurityPolicy 1.2 エディターズ ドラフト (WS-SX WSSP 1.2 (06/2006)) に基づいています。表 3-7 に、2007 年 2 月 21 日付の WS-SecurityPolicy 1.2 ドラフトの要素をまとめます。これらの要素は、このリリースの WebLogic Server ではサポートされていません。
WS-SecurityPolicy 仕様が規定される前にリリースされた旧バージョンの WebLogic Server では、WS-Policy 仕様に基づき、BEA 独自のセキュリティ ポリシー スキーマを使用して記述されたセキュリティ ポリシー ファイルを使用していました。このリリースの WebLogic Server では、WS-SecurityPolicy 1.2 仕様に準拠するセキュリティ ポリシー ファイルと、BEA Web サービス セキュリティ ポリシー スキーマに従って記述されたセキュリティ ポリシー ファイル (WebLogic Server 9 から提供開始) の両方がサポートされています。
警告 : | WS-SecurityPolicy 1.2 ポリシー ファイルと BEA 独自の Web サービス セキュリティ ポリシー スキーマ ファイルには、相互の互換性はありません。したがって、1 つの Web サービスに、両方のタイプのポリシー ファイルを定義することはできません。WS-Security 1.1 機能を使用する場合は、WS-SecurityPolicy 1.2 ポリシー ファイル形式を使用する必要があります。 |
この節では、WebLogic Server にあらかじめパッケージ化されている BEA Web サービス セキュリティ ポリシー スキーマ ファイルについて説明します。これらは、すべて抽象ポリシー ファイルです。詳細については、「抽象および具象ポリシー ファイル」を参照してください。
注意 : | WebLogic Web サービスのメッセージレベルのセキュリティをコンフィグレーションするためにこれらのセキュリティ ポリシー ファイルで使用されるポリシー アサーションは、Web Services Security Policy Language (WS-SecurityPolicy) 仕様 (2002 年 12 月 18 日付) に記述されているアサーションに基づいています。つまり、WebLogic Server のアサーションの正確な構文と使用方法は、この仕様で説明されているアサーションとは異なっていますが、意味上の違いはありません。これらのアサーションには、これ以降の仕様の更新は反映されていません。 |
あらかじめパッケージ化されている BEA Web サービス セキュリティ ポリシー ファイルは以下のとおりです。
Sign.xml
や Encrypt.xml
と併用することもできます。Auth.xml
や Encrypt.xml
と併用することもできます。Auth.xml
や Sign.xml
と併用することもできます。注意 : | このあらかじめパッケージ化されたポリシー ファイルは単体での使用を目的としています。Auth.xml 、Sign.xml 、Encrypt.xml 、または Wssc-sct.xml との併用は意図されていません。また、クライアントとサービスでセキュリティ コンテキストを共有する場合、セキュリティ レベルを高めるためには Wssc-sct.xml ではなくこのポリシー ファイルを使用することをお勧めします。 |
注意 : | このあらかじめパッケージ化されたポリシー ファイルは単体での使用を目的としています。Auth.xml 、Sign.xml 、Encrypt.xml 、または Wssc-dk.xml との併用は意図されていません。また、このポリシー ファイルでは WS-SecureConversation 仕様のさまざまな使用例がサポートされますが、クライアントとサービスでセキュリティ コンテキストを共有する場合、セキュリティ レベルを高めるためには Wssc-sct.xml ではなく Wssc-dk.xml ポリシー ファイルを使用することをお勧めします。 |
WebLogic Web サービス実行時環境では、抽象および具象という若干異なる 2 種類のセキュリティ ポリシー ファイルが認識されます。
抽象ポリシー ファイルでは、認証、暗号化、およびデジタル署名に使用されるセキュリティ トークンが明示的に指定されません。Web サービス実行時環境が Web サービスがデプロイされるときにセキュリティ トークンを決定します。つまり具体的には、ポリシー ファイルの <Identity>
および <Integrity>
要素 (またはアサーション) には <SupportedTokens><SecurityToken>
子要素が含まれず、ポリシー ファイルの <Confidentiality>
要素には <KeyInfo><SecurityToken>
子要素が含まれません。
Web サービスがあらかじめパッケージ化されているポリシー ファイルのみに関連付けられている場合は、クライアント認証でユーザ名トークンが必要になります。Web サービスでは、暗号化とデジタル署名用のトークン タイプは 1 つしかサポートされていません (X.509
)。つまり、<Integrity>
要素および <Confidentiality>
要素が使用される場合でも、抽象ポリシー ファイルと具象ポリシー ファイルは結果として本質的には同じになります。
Web サービスが抽象ポリシー ファイルに関連付けられ、そのファイルが WSDL の添付ファイルとして公開される場合 (デフォルトの動作)、Web サービスのアーカイブ ファイル (JAR または WAR) にパッケージ化される静的 WSDL ファイルは、デプロイされた Web サービスの動的 WSDL ファイルとは若干異なります。つまり、抽象的な静的 WSDL には特定の <SecurityToken>
要素が含まれていないのに対し、動的 WSDL にはこうした要素が含まれています。これは、サービスがデプロイされるときに Web サービス ランタイムによってこれらの要素が自動的に設定されるためです。このため、クライアント アプリケーション内に JAX-RPC スタブを作成するコードにおいては、必ず動的 WSDL を指定してください。そうしないとオペレーションを呼び出そうとしたときに実行時エラーが発生します。
HelloService service = new HelloService(Dynamic_WSDL);
この場合、clientgen
Ant タスクには静的 WSDL と動的 WSDL のどちらでも指定できます。デプロイされた Web サービスの動的 WSDL ファイルの表示については、「Web サービスの WSDL の参照」を参照してください。
具象ポリシー ファイルでは、Web サービスのプログラミング時にセキュリティ トークンの詳細が明示的に指定されます。サービスのプログラミング時に、認証のタイプの詳細 (x509
トークンまたは SAML
トークンの使用など) や、キーストアの複数のプライベート キーと証明書のペアが暗号化とデジタル署名に使用されるかどうかなどが分かっている場合に、具象セキュリティ ポリシー ファイルを作成します。
下記の WebLogic Server Auth.xml
ファイルでは、Web サービスを呼び出すクライアント アプリケーションが、認証をサポートしているトークン (ユーザ名または X.509) のいずれかを使用して自身を認証する必要があることを指定します。
あらかじめパッケージ化されている BEA Web サービス セキュリティ ポリシー スキーマ ファイルは抽象ファイルです。そのため、開発時には Auth.xml
ファイルに特定のユーザ名や X.509 トークンのアサーションはありません。ユーザが WebLogic Server に対してどのようにセキュリティをコンフィグレーションしたかによって、ユーザ名トークン、X.509 トークン、またはその両方が、Web サービスに関連付けられた実際の実行時バージョンの Auth.xml
ポリシー ファイルに示されます。さらに、実行時バージョンのポリシー ファイルにある X.509 トークンがクライアントの呼び出しに適用される場合は、SOAP メッセージの本文全体が署名されます。
ID として X.509 のみを使用し、ユーザ名トークンは使用しないように指定する場合、また ID として X.509 を使用していて SOAP メッセージの特定の部分だけを署名するように指定する場合は、カスタム セキュリティ ポリシー ファイルを作成する必要があります。
<?xml version="1.0"?>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
>
<wssp:Identity/>
</wsp:Policy>
WebLogic Server の Sign.xml
ファイルでは、SOAP メッセージの本文および WebLogic 固有のシステム ヘッダをデジタル署名することを指定します。また、デジタル署名されるタイムスタンプを SOAP メッセージに含めることを指定し、署名に使用するトークンにもデジタル署名を行うことを指定します。署名に使用するトークンは SOAP メッセージに含まれます。
以下のヘッダは、Sign.xml
セキュリティ ポリシー ファイルの使用時に署名されます。
以下に WebLogic Server の Sign.xml
ファイルを示します。
<?xml version="1.0"?>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
>
<wssp:Integrity>
<wssp:SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<wssp:CanonicalizationAlgorithm
URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1" />
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SystemHeaders()
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1" />
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(wsu:Timestamp)
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1" />
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
</wssp:Integrity>
<wssp:MessageAge/>
</wsp:Policy>
WebLogic Server の Encrypt.xml
ファイルでは、SOAP メッセージの本文全体を暗号化することを指定します。デフォルトでは、暗号化トークンは SOAP メッセージに含まれません。
<?xml version="1.0"?>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
>
<wssp:Confidentiality>
<wssp:KeyWrappingAlgorithm URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:KeyInfo/>
</wssp:Confidentiality>
</wsp:Policy>
WS-SecureConversation 仕様のとおりにクライアントと Web サービスでセキュリティ コンテキストを共有すること、および派生キー トークンを使用することを指定します。このファイルは、もっとも高度なセキュリティを確保できます。
このポリシー ファイルでは以下のコンフィグレーションが提供されます。
デフォルトのセキュリティ コンテキストと派生キーの動作を変更する場合は、以降の節で説明するカスタム セキュリティ ポリシー ファイルを作成する必要があります。
警告 : | このあらかじめパッケージ化されたセキュリティ ポリシー ファイルを指定する場合、他のあらかじめパッケージ化されたセキュリティ ポリシー ファイルは指定しないでください。 |
<?xml version="1.0"?>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
>
<wssp:Integrity SupportTrust10="true">
<wssp:SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
<wssp:CanonicalizationAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SystemHeaders()
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(wsu:Timestamp)
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:SupportedTokens>
<wssp:SecurityToken IncludeInMessage="true"
TokenType="http://schemas.xmlsoap.org/ws/2005/02/sc/dk"
DerivedFromTokenType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct">
<wssp:Claims>
<wssp:Label>WS-SecureConversationWS-SecureConversation</wssp:Label>
<wssp:Length>16</wssp:Length>
</wssp:Claims>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Integrity>
<wssp:Confidentiality SupportTrust10="true">
<wssp:Target>
<wssp:EncryptionAlgorithm URI="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()</wssp:MessageParts>
</wssp:Target>
<wssp:KeyInfo>
<wssp:SecurityToken IncludeInMessage="true"
TokenType="http://schemas.xmlsoap.org/ws/2005/02/sc/dk"
DerivedFromTokenType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct">
<wssp:Claims>
<wssp:Label>WS-SecureConversationWS-SecureConversation</wssp:Label>
<wssp:Length>16</wssp:Length>
</wssp:Claims>
</wssp:SecurityToken>
</wssp:KeyInfo>
</wssp:Confidentiality>
<wssp:MessageAge/>
</wsp:Policy>
WS-SecureConversation 仕様のとおりに、クライアントと Web サービスでセキュリティ コンテキストを共有することを指定します。この場合、SOAP メッセージの暗号化と署名にはセキュリティ コンテキスト トークンが使用されます。これは Wssc-dk.xml の場合とは異なり、Wssc-dk.xml では派生キー トークンが使用されます。Wssc-sct.xml
ポリシー ファイルは、仕様のすべての使用例をサポートするために提供されています。ただし、セキュリティ コンテキストの共有を指定する場合、最高のセキュリティを実現するためには、セキュリティ レベルの高い Wssc-dk.xml を常に使用することをお勧めします。
このセキュリティ ポリシー ファイルでは以下のコンフィグレーションが提供されます。
デフォルトのセキュリティ コンテキストと派生キーの動作を変更する場合は、以降の節で説明するカスタム セキュリティ ポリシー ファイルを作成する必要があります。
警告 : | このあらかじめパッケージ化されたセキュリティ ポリシー ファイルを指定する場合、他のあらかじめパッケージ化されたセキュリティ ポリシー ファイルは指定しないでください。 |
<?xml version="1.0"?>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
>
<wssp:Integrity SupportTrust10="true">
<wssp:SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
<wssp:CanonicalizationAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/> <wssp:MessageParts Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SystemHeaders()
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(wsu:Timestamp)
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:SupportedTokens>
<wssp:SecurityToken IncludeInMessage="true"
TokenType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct">
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Integrity>
<wssp:Confidentiality SupportTrust10="true">
<wssp:Target>
<wssp:EncryptionAlgorithm URI="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()</wssp:MessageParts>
</wssp:Target>
<wssp:KeyInfo>
<wssp:SecurityToken IncludeInMessage="true"
TokenType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct">
</wssp:SecurityToken>
</wssp:KeyInfo>
</wssp:Confidentiality>
<wssp:MessageAge/>
</wsp:Policy>
![]() ![]() ![]() |