第275章 XML Security DataFormat
Camel バージョン 2.0 で利用可能
XMLSecurity Data Format を使用すると、Document、Element、および Element Content レベルでの XML ペイロードの暗号化と復号が容易になります(XPath を使用した同時マルチノード暗号化/復号化を含む)。XML 署名仕様を使用してメッセージに署名するには、Camel XML Security コンポーネントを参照してください。
暗号化機能は、Apache XML Security(Santuario)プロジェクトを使用してサポートされる形式に基づいています。対称暗号化/復号化は、現在 Triple-DES および AES(128、192、および 256)暗号化形式を使用してサポートされます。必要に応じて、追加形式を簡単に追加できます。この機能により、Camel ユーザーはルートでディスパッチまたは受信中にペイロードを暗号化/復号化できます。
Camel 2.9 で利用可能
は、XMLSecurity Data Format は非対称鍵の暗号化をサポートします。この暗号化モデルでは、対称鍵が生成され、XML コンテンツの暗号化または復号の実行に使用されます。この「コンテンツ暗号化キー」は、受信者の公開鍵を「鍵暗号化キー」として利用する非対称暗号化アルゴリズムを使用して暗号化されます。非対称鍵暗号化アルゴリズムを使用すると、受信者の秘密鍵のホルダーのみが生成された対称暗号化鍵にアクセスできるようになります。そのため、秘密鍵のホルダーのみがメッセージをデコードできます。XMLSecurity Data Format は、非対称鍵の暗号化を使用してメッセージコンテンツと暗号化キーを暗号化および復号化するのに必要なすべてのロジックを処理します。
XMLSecurity Data Format は、暗号化のコンテンツを選択する XPath クエリーを処理する際の名前空間のサポートも改善しました。namespace 定義マッピングは、データ形式設定の一部として含めることができます。これにより、XPath クエリーとターゲット xml ドキュメントの接頭辞の値が同等の文字列でなくても、true 名前空間の照合が可能になります。
275.1. XMLSecurity オプション
XML セキュリティーデータ形式は、以下に示す 12 個のオプションをサポートします。
Name | デフォルト | Java タイプ | 説明 |
---|---|---|---|
xmlCipherAlgorithm |
|
| XML メッセージコンテンツの暗号化/復号化に使用する暗号アルゴリズム。XMLCipher.TRIPLEDES XMLCipher.AES_128 XMLCipher.AES_128_GCM XMLCipher.AES_192 XMLCipher.AES_192_GCM XMLCipher.AES_256 XMLCipher.AES_256_GCM XMLCipher.SEED_128 XMLCipher.CAMELLIA_128 XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_256 XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_256 は MLCipher.TRIPLEDES |
passPhrase |
| コンテンツを暗号化/復号化するために passPhrase として使用される文字列。passPhrase を指定する必要があります。passPhrase が指定されていない場合は、デフォルトの passPhrase が使用されます。passPhrase は、適切な暗号化アルゴリズムと併用する必要があります。たとえば TRIPLEDES を使用する場合、PassPhase を別の 24 バイトキーのみにすることができます。 | |
secureTag |
| 暗号化/復号化用に選択した XML 要素への XPath 参照。タグが指定されていない場合、ペイロード全体が暗号化/復号化されます。 | |
secureTagContents |
|
| XML 要素が暗号化されるかどうか、または XML 要素 false = 要素レベルの内容を指定するブール値。 |
keyCipherAlgorithm |
|
| 非対称鍵の暗号化/復号化に使用する暗号アルゴリズム。使用できる選択肢は XMLCipher.RSA_v1dot5 XMLCipher.RSA_OAEP XMLCipher.RSA_OAEP_11 です。デフォルト値は XMLCipher.RSA_OAEP です。 |
recipientKeyAlias |
| 非対称鍵の暗号化または復号化の実行時に KeyStore から受信側の公開鍵または秘密鍵を取得する際に使用されるキーエイリアス。 | |
keyOrTrustStoreParametersId |
| KeyStore インスタンスを参照してレジストリーで検索します。これは、送信者の trustStore または受信者の keyStore を表す KeyStore インスタンスを作成し、読み込む設定オプションに使用されます。 | |
keyPassword |
| KeyStore から秘密鍵を取得するために使用されるパスワード。このキーは非対称復号化に使用されます。 | |
digestAlgorithm |
|
| RSA OAEP アルゴリズムで使用するダイジェストアルゴリズム。使用できる選択肢は XMLCipher.SHA1 XMLCipher.SHA256 XMLCipher.SHA512 です。デフォルト値は XMLCipher.SHA1 です。 |
mgfAlgorithm |
|
| RSA OAEP アルゴリズムで使用する MGF アルゴリズム。EncryptionConstants.MGF1_SHA1 EncryptionConstants.MGF1_SHA256 EncryptionConstants.MGF1_SHA512 を選択できます。デフォルト値は EncryptionConstants.MGF1_SHA1 です。 |
addKeyValueForEncryptedKey |
|
| 暗号化キーの構造で KeyValue としてセッションキーの暗号化に使用される公開鍵を追加するかどうか。 |
contentTypeHeader |
|
| データフォーマットがデータ形式を実行できる場合に、データ形式がデータ形式の型で Content-Type ヘッダーを設定するかどうか。たとえば、XML へのデータフォーマットの application/xml、または JSon へのデータフォーマットの application/json など。 |
275.1.1. キー暗号アルゴリズム
Camel 2.12.0 より、デフォルトの キー暗号アルゴリズム は XMLCipher.RSA_v1dot5 ではなく XMLCipher.RSA_OAEP になりました。さまざまな攻撃により、XMLCipher.RSA_v1dot5 の使用は推奨されません。RSA v1.5 を鍵暗号アルゴリズムとして使用する要求は、鍵暗号アルゴリズムとして明示的に設定されていない限り拒否されます。