要求ジェネレーター・バインディングの設定では、暗号化方式に SOAP メッセージの暗号化で使用するデータ暗号化アルゴリズムおよび鍵暗号化アルゴリズムの指定が含まれます。 暗号化用 WSS API (WSSEncryption) は、アルゴリズム名、およびデータ暗号化方式と鍵暗号化方式のマッチング・アルゴリズム URI (Uniform Resource Identifier) を指定します。 データ暗号化アルゴリズムと鍵暗号化アルゴリズムを指定すると、それらのアルゴリズムで暗号化されたエレメントのみが受け入れられます。
データ暗号化アルゴリズムは、本文とシグニチャーを含む SOAP メッセージの各部を暗号化するために使用します。 データ暗号化解除アルゴリズムは、各データ暗号化アルゴリズム・タイプのアルゴリズム URI (Uniform Resource Identifier) を指定します。
データ暗号化アルゴリズム名 | アルゴリズム URI |
---|---|
WSSEncryption.AES128 (デフォルト値) | データ暗号化アルゴリズム AES 128 の URI: http://www.w3.org/2001/04/xmlenc#aes128-cbc |
WSSEncryption.AES192 | データ暗号化アルゴリズム AES 192 の URI: http://www.w3.org/2001/04/xmlenc#aes192-cbc |
WSSEncryption.AES256 | データ暗号化アルゴリズム AES 256 の URI: http://www.w3.org/2001/04/xmlenc#aes256-cbc |
WSSEncryption.TRIPLE_DES | データ暗号化アルゴリズム TRIPLE DES の URI: http://www.w3.org/2001/04/xmlenc#tripledes-cbc |
デフォルトでは、Java Cryptography Extension (JCE) は、効果が制限または限定された強力な暗号に付属しています。 192 ビットおよび 256 ビットの Advanced Encryption Standard (AES) 暗号化アルゴリズムを使用するには、 無制限の管轄権ポリシー・ファイルを適用する必要があります。
AES256-cbc アルゴリズムおよび AES192-cbc アルゴリズムの場合、Web サイト http://www.ibm.com/developerworks/java/jdk/security/index.html から非制限 Java™ Cryptography Extension (JCE) ポリシー・ファイルをダウンロードする必要があります。
ジェネレーター側の暗号化用に構成されたデータ暗号化アルゴリズムは、コンシューマー側の暗号化解除用に構成されたデータ暗号化アルゴリズムと一致している必要があります。
このアルゴリズムは、鍵の暗号化と暗号化解除に使用されます。この鍵情報は、デジタル署名および暗号化用の鍵の生成に必要な構成を指定する際に使用します。 署名情報の構成と暗号化情報の構成で、鍵情報を共用することができます。 コンシューマー側の鍵情報は、 受信メッセージにおけるデジタル署名の検証と、 暗号化されたメッセージ・パーツの暗号化解除に使用する鍵の情報を指定するために使用します。 要求ジェネレーターはクライアント用に構成されます。
鍵暗号化アルゴリズムは、鍵暗号化方式のアルゴリズム URI (Uniform Resource Identifier) を指定します。 以下の事前構成済み鍵暗号化アルゴリズムがサポートされています。
WSS API | URI |
---|---|
WSSEncryption.KW_AES128 | 鍵暗号化アルゴリズムの URI、キー・ラップ AES 128 の場合: http://www.w3.org/2001/04/xmlenc#kw-aes128 |
WSSEncryption.KW_AES192 | 鍵暗号化アルゴリズムの URI、キー・ラップ AES 192 の場合:
http://www.w3.org/2001/04/xmlenc#kw-aes192 注:
ご使用の構成済みアプリケーションを Basic Security Profile (BSP) に準拠させる場合は、
192 ビットの鍵暗号化アルゴリズムを使用しないでください。
|
WSSEncryption.KW_AES256 | 鍵暗号化アルゴリズムの URI、キー・ラップ AES 256 の場合: http://www.w3.org/2001/04/xmlenc#kw-aes256 |
WSSEncryption.KW_RSA_OAEP (デフォルト値) | 鍵暗号化アルゴリズムの URI、キー・ラップ RSA OAEP の場合: http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p |
WSSEncryption.KW_RSA15 | 鍵暗号化アルゴリズムの URI、キー・ラップ RSA 1.5 の場合: http://www.w3.org/2001/04/xmlenc#rsa-1_5 |
WSSEncryption.KW_TRIPLE_DES | 鍵暗号化アルゴリズムの URI、キー・ラップ TRIPLE DES の場合: http://www.w3.org/2001/04/xmlenc#kw-tripledes |
デフォルトで RSA-OAEP アルゴリズムは、OAEPParams 用のオプショナル・エンコードのオクテット・ストリングに対してヌル・ストリングを使用します。 鍵暗号化アルゴリズム・プロパティーを指定することにより、明示的エンコードのオクテット・ストリングを提供できます。 プロパティー名には、com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams を指定します。 プロパティー値は、オクテット・ストリングを Base 64 でエンコードした値です。
KW-AES256 鍵暗号化アルゴリズムおよび KW-AES192 鍵暗号化アルゴリズムの場合、 Web サイト http://www.ibm.com/developerworks/java/jdk/security/index.html から非制限 JCE ポリシー・ファイルをダウンロードする必要があります。
ジェネレーター用の鍵暗号化アルゴリズムは、 コンシューマー用に構成された鍵暗号化解除アルゴリズムと一致していなければなりません。
以下は、データ暗号化方式で Triple-DES を使用し、鍵暗号化方式で RSA1.5 を使用する暗号化のサンプル・コードの例です。
// get the message context Object msgcontext = getMessageContext(); // generate WSSFactory instance WSSFactory factory = WSSFactory.getInstance(); // generate WSSGenerationContext instance WSSGenerationContext gencont = factory.newWSSGenerationContext(); // generate callback handler X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler( "", "enc-sender.jceks", "jceks", "storepass".toCharArray(), "bob", null, "CN=Bob, O=IBM, C=US", null); // generate the security token used to the encryption SecurityToken token = factory.newSecurityToken(X509Token.class , callbackHandler); // generate WSSEncryption instance to encrypt the SOAP body content WSSEncryption enc = factory.newWSSEncryption(token); enc.addEncryptPart(WSSEncryption.BODY_CONTENT); // set the data encryption method // DEFAULT: WSSEncryption.AES128 enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES); // set the key encryption method // DEFAULT: WSSEncryption.KW_RSA_OAEP enc.setEncryptionMethod(WSSEncryption.KW_RSA15); // add the WSSEncryption to the WSSGenerationContext gencont.add(enc); // generate the WS-Security header gencont.process(msgcontext);