第296章 XML Security DataFormat
Camel バージョン 2.0 以降で利用可能
XMLSecurity データフォーマットは、ドキュメント、エレメント、およびエレメントコンテンツレベルでの XML ペイロードの暗号化と復号化を容易にします (XPath を使用した同時マルチノード暗号化/復号化を含む)。XML 署名仕様を使用してメッセージに署名するには、Camel XML Security コンポーネントを参照してください。
暗号化機能は、Apache XML Security (Santuario) プロジェクトを使用してサポートされる形式に基づいています。対称暗号化/復号化は現在、トリプル DES および AES (128、192、および 256) 暗号化形式を使用してサポートされています。追加フォーマットは、必要に応じて後で簡単に追加できます。この機能により、Camel ユーザーは、ルートに配信または受信されている間にペイロードを暗号化/復号化できます。
Camel 2.9 以降で利用可能
XMLSecurity データ形式は、非対称キー暗号化をサポートしています。この暗号化モデルでは、対称キーが生成され、XML コンテンツの暗号化または復号化を実行するために使用されます。この "コンテンツ暗号化キー" は、受信者の公開キーを "キー暗号化キー" として利用する非対称暗号化アルゴリズムを使用して暗号化されます。非対称鍵暗号化アルゴリズムを使用すると、受信者の秘密鍵の所有者のみが、生成された対称暗号化鍵にアクセスできるようになります。したがって、秘密鍵の所有者だけがメッセージをデコードできます。XMLSecurity データフォーマットは、非対称キー暗号化を使用してメッセージコンテンツと暗号化キーを暗号化および復号化するために必要なすべてのロジックを処理します。
XMLSecurity データ形式では、暗号化するコンテンツを選択する XPath クエリーを処理する際の名前空間のサポートも改善されています。名前空間定義マッピングは、データ形式設定の一部として含めることができます。これにより、XPath クエリーとターゲット xml ドキュメントの接頭辞値が同等の文字列でない場合でも、真の名前空間の一致が可能になります。
296.1. XML セキュリティーオプション
XML セキュリティーデータ形式は、以下に示す 13 個のオプションをサポートしています。
名前 | デフォルト | 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 デフォルト値は MLCipher.TRIPLEDES です。 |
passPhrase |
| コンテンツを暗号化/復号化するための passPhrase として使用される文字列。passPhrase を指定する必要があります。passPhrase が指定されていない場合は、デフォルトの passPhrase が使用されます。passPhrase は、適切な暗号化アルゴリズムと組み合わせて使用する必要があります。たとえば、TRIPLEDES を使用すると、passPhase を別の 24 バイトキーのみにすることができます。 | |
passPhraseByte |
| コンテンツを暗号化/復号化するための passPhrase として使用されるバイト。passPhrase を指定する必要があります。passPhrase が指定されていない場合は、デフォルトの passPhrase が使用されます。passPhrase は、適切な暗号化アルゴリズムと組み合わせて使用する必要があります。たとえば、TRIPLEDES を使用すると、passPhase を別の 24 バイトキーのみにすることができます。 | |
secureTag |
| 暗号化/復号化のために選択された XML 要素への XPath 参照。タグが指定されていない場合、ペイロード全体が暗号化/復号化されます。 | |
secureTagContents |
|
| XML 要素を暗号化するか、XML 要素のコンテンツを暗号化するかを指定するブール値 false = 要素レベル true = 要素コンテンツレベル |
keyCipherAlgorithm |
|
| 非対称キーの暗号化/復号化に使用される暗号アルゴリズム。選択できるのは以下の通りです: XMLCipher.RSA_v1dot5 XMLCipher.RSA_OAEP XMLCipher.RSA_OAEP_11 デフォルト値は XMLCipher.RSA_OAEP です。 |
recipientKeyAlias |
| 非対称キーの暗号化または復号化を実行するときに、KeyStore から受信者の公開キーまたは秘密キーを取得するときに使用される Key Alias。 | |
keyOrTrustStoreParametersId |
| 送信者の trustStore または受信者の keyStore を表す 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 |
|
| セッション鍵の暗号化に使用される公開鍵を EncryptedKey 構造体の KeyValue として追加するかどうか。 |
contentTypeHeader |
|
| データフォーマットがデータ形式を実行できる場合は、データフォーマットの型で Content-Type ヘッダーを設定するかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は JSon です。 |
296.1.1. 鍵暗号アルゴリズム
Camel 2.12.0 の時点で、デフォルトの鍵暗号アルゴリズムは XMLCipher.RSA_v1dot5 ではなく XMLCipher.RSA_OAEP になりました。XMLCipher.RSA_v1dot5 の使用は、さまざまな攻撃を避けるため推奨されていません。鍵暗号アルゴリズムとして RSA v1.5 を使用する要求は、鍵暗号アルゴリズムとして明示的に設定されていない限り拒否されます。