Red Hat Training

A Red Hat training course is available for Red Hat Fuse

345.5. エンドポイントオプション

XML Security エンドポイントは、URI 構文を使用して設定されます。

xmlsecurity:command:name

パスおよびクエリーパラメーターを使用します。

345.5.1. パスパラメーター (2 個のパラメーター):

名前説明デフォルトタイプ

command

必須 署名するか検証するか。

 

XmlCommand

name

必須 URI の名前部分はユーザーが選択して、camel コンテキスト内の異なる signer/verifier エンドポイントを区別できます。

 

String

345.5.2. クエリーパラメーター(35 個のパラメーター):

名前説明デフォルトタイプ

baseUri (common)

URI デリファレンスで使用するベース URI を設定できます。次に、相対 URI がベース URI と連結されます。

 

String

clearHeaders (common)

署名と検証後に XML 署名固有のヘッダーをクリアするかどうかを決定します。デフォルトは true です。

true

Boolean

cryptoContextProperties (common)

暗号コンテキストプロパティーを設定します。リンク XMLCryptoContextsetProperty (String、Object) を参照してください。設定可能なプロパティーは、XMLSignContext および XMLValidateContext で定義されます (サポートされるプロパティーを参照)。次のプロパティーは、デフォルトで XML 検証用の値リンク BooleanTRUE に設定されています。これらの機能をオフにする場合は、プロパティー値をリンク BooleanFALSE に設定する必要があります。org.jcp.xml.dsig.validateManifests javax.xml.crypto.dsig.cacheReference

 

Map

disallowDoctypeDecl (common)

着信 XML ドキュメントに DTD DOCTYPE 宣言が含まれることを禁止します。デフォルト値はリンク BooleanTRUE です。

true

Boolean

omitXmlDeclaration (common)

送信メッセージボディーの XML 宣言を省略するかどうかを示すインジケーター。デフォルト値は false です。ヘッダーリンク XmlSignatureConstantsHEADER_OMIT_XML_DECLARATION で上書きできます。

false

Boolean

outputXmlEncoding (common)

結果の署名付き XML ドキュメントの文字エンコーディング。null の場合、元の XML ドキュメントのエンコーディングが使用されます。

 

String

schemaResourceUri (common)

XML スキーマへのクラスパス。ID 属性を決定するために detached XML 署名ケースで指定する必要があり、enveloped ケースおよび enveloping ケースで設定される場合があります。設定されている場合、XML ドキュメントは指定された XML スキーマで検証されます。スキーマリソース URI は、ヘッダーリンク XmlSignatureConstantsHEADER_SCHEMA_RESOURCE_URI によって上書きできます。

 

文字列

synchronous (advanced)

同期処理を厳密に使用するか、Camel が非同期処理を使用できるかどうかを設定します (サポートされている場合)。

false

boolean

uriDereferencer (advanced)

参照 URI によるリモートアクセスを制限したい場合は、独自の dereferencer を設定できます。オプションのパラメーター。設定されていない場合、URI フラグメント、HTTP、ファイル、および XPpointer URI を解決できるプロバイダーのデフォルトの逆参照子が使用されます。注意: 実装はプロバイダーに依存します!

 

URIDereferencer

addKeyInfoReference (sign)

KeyInfo 要素を改ざんから保護するために、署名された情報要素への参照を追加して、署名値によって保護されるようにすることができます。デフォルト値は true です。KeyAccessor によって KeyInfo が返される場合にのみ関連します。リンク KeyInfogetId() は null ではありません。

true

Boolean

canonicalizationMethod (sign)

ダイジェストが計算される前に SignedInfo 要素を正規化するために使用される正規化メソッド。ヘルパーメソッド XmlSignatureHelper.getCanonicalizationMethod(String algorithm) または getCanonicalizationMethod(String algorithm, List inclusiveNamespacePrefixes) を使用して、正規化メソッドを作成できます。

http://www.w3.org/TR/2001/REC-xml-c14n-20010315

AlgorithmMethod

contentObjectId (sign)

コンテンツオブジェクト Id 属性値を設定します。デフォルトでは、UUID が生成されます。null 値を設定すると、新しい UUID が生成されます。enveloping ケースのみ使用。

 

String

contentReferenceType (sign)

コンテンツ参照のタイプ。デフォルト値は null です。この値は、ヘッダーリンク XmlSignatureConstantsHEADER_CONTENT_REFERENCE_TYPE で上書きできます。

 

文字列

contentReferenceUri (sign)

署名するコンテンツの参照 URI。enveloped ケースのみの使用です。参照 URI に ID 属性値が含まれている場合、リソーススキーマ URI (リンク setSchemaResourceUri (String)) も設定する必要があります。これは、スキーマバリデーターが ID 属性である属性を検出するためです。enveloping ケースや detached ケースは無視されます。

 

String

digestAlgorithm (sign)

ダイジェストアルゴリズムの URI。オプションのパラメーター。このダイジェストアルゴリズムは、入力メッセージのダイジェストを計算するために使用されます。このダイジェストアルゴリズムが指定されていない場合、ダイジェストアルゴリズムは署名アルゴリズムから計算されます。例: http://www.w3.org/2001/04/xmlencsha256

 

文字列

keyAccessor (sign)

署名プロセスには、秘密鍵が必要です。この秘密鍵を提供するキーアクセサー Bean を指定します。キーアクセサー Bean は KeyAccessor インターフェイスを実装する必要があります。パッケージ org.apache.camel.component.xmlsecurity.api には、Java キーストアから秘密鍵を読み取るデフォルトの実装クラス DefaultKeyAccessor が含まれています。

 

KeyAccessor

parentLocalName (sign)

XML 署名要素が追加される親要素のローカル名。enveloped XML 署名にのみ関連します。または、リンク setParentXpath (XPathFilterParameterSpec) を使用することもできます。デフォルト値は null です。enveloping および detached された XML 署名の場合、値は null である必要があります。このパラメーターまたは enveloped 署名のパラメーターリンク setParentXpath(XPathFilterParameterSpec) と detached 署名のパラメーターリンク setXpathsToIdAttributes(List) を同じように設定することはできません。パラメーター parentXpath と parentLocalName が同じ設定で指定されている場合、例外が出力されます。

 

String

parentNamespace (sign)

XML 署名要素が追加される親要素の名前空間。

 

String

parentXpath (sign)

エンベロープケースで親ノードを検索するように XPath を設定します。このメソッドを介して親ノードを指定するか、メソッドリンク setParentLocalName(String) およびリンク setParentNamespace(String) を使用して親のローカル名と名前空間を指定します。デフォルト値は null です。enveloping および detached された XML 署名の場合、値は null である必要があります。パラメーター parentXpath と parentLocalName が同じ設定で指定されている場合、例外が出力されます。

 

XPathFilterParameter Spec

plainText (sign)

メッセージボディーにプレーンテキストが含まれているかどうかを示します。デフォルト値は false で、メッセージボディーに XML が含まれていることを示します。値は、ヘッダーリンク XmlSignatureConstantsHEADER_MESSAGE_IS_PLAIN_TEXT で上書きできます。

false

Boolean

plainTextEncoding (sign)

プレーンテキストのエンコード。メッセージボディーがプレーンテキストの場合にのみ関連します (パラメーターリンク plainText) を参照してください。デフォルト値は UTF-8 です。

UTF-8

String

prefixForXmlSignature Namespace (sign)

XML 署名名前空間 http://www.w3.org/2000/09/xmldsig の名前空間接頭辞。デフォルト値は ds です。null または空の値が設定されている場合、XML 署名名前空間に接頭辞は使用されません。ベストプラクティスを参照してください http://www.w3.org/TR/xmldsig-bestpractices/signing-xml-

ds

String

properties (sign)

追加のプロパティーを含む XML 署名に追加の参照とオブジェクトを追加するために、XmlSignatureProperties インターフェイスを実装する Bean を提供できます。

 

XmlSignatureProperties

signatureAlgorithm (sign)

署名アルゴリズム。デフォルト値は http://www.w3.org/2000/09/xmldsigrsa-sha1 です。

http://www.w3.org/2000/09/xmldsig#rsa-sha1

String

signatureId (sign)

署名 ID を設定します。このパラメーターが設定されていない場合 (null 値)、署名 ID に対して一意の ID が生成されます (デフォルト)。このパラメーターが (空の文字列) に設定されている場合、署名要素に Id 属性は作成されません。

 

String

transformMethods (sign)

ダイジェストが計算される前にメッセージボディーで実行される変換。デフォルトでは、C14n が追加され、enveloped 署名の場合 (parentLocalName オプションを参照)、http://www.w3.org/2000/09/xmldsigenveloped-signature もリストの位置 0 に追加されます。XmlSignatureHelper のメソッドを使用して、変換メソッドを作成します。

 

List

xpathsToIdAttributes (sign)

XPATH 式を介して detached ケースで署名されている要素を ID 属性 (タイプ ID の属性) に定義します。XPATH 式を介して見つかった各要素に対して、detached 署名が作成されます。その参照 URI には、対応する属性値 (先頭に '' が付きます) が含まれます。署名は、署名された要素の最後のシブリングになります。より深い階層レベルを持つ要素が最初に署名されます。ヘッダーリンク XmlSignatureConstantsHEADER_XPATHS_TO_ID_ATTRIBUTES を使用して、XPATH リストを動的に設定することもできます。enveloped 署名のパラメーターリンク setParentLocalName(String) またはリンク setParentXpath(XPathFilterParameterSpec) と、detached 署名のこのパラメーターを同じ設定で設定することはできません。

 

List

keySelector (verify)

XML 署名を検証するためのキーを提供します。

 

KeySelector

outputNodeSearch (verify)

出力メッセージ本文に設定する XML 署名ドキュメントからノードを決定するための出力ノード検索値を設定します。値のクラスは、出力ノード検索のタイプによって異なります。出力ノード検索は XmlSignature2Message に転送されます。

 

String

outputNodeSearchType (verify)

出力メッセージ bodyF にシリアル化される出力ノードを決定するための検索タイプを決定します。リンク setOutputNodeSearch (Object) を参照してください。サポートされている既定の検索の種類は、DefaultXmlSignature2Message にあります。

デフォルト

String

removeSignatureElements (verify)

出力メッセージに設定されたドキュメントから XML 署名要素 (ローカル名 Signature および 名前空間 http://www.w3.org/2000/09/xmldsig を持つ要素) を削除するかどうかを示します。通常、これは XML 署名が enveloped の場合にのみ必要です。デフォルト値はリンク BooleanFALSE です。このパラメーターは XmlSignature2Message に転送されます。出力ノード検索のタイプがリンク DefaultXmlSignature2MessageOUTPUT_NODE_SEARCH_TYPE_DEFAULT.F の場合、このインジケーターは効果がありません。

false

Boolean

secureValidation (verify)

安全な検証を有効にします。true の場合、安全な検証が有効になります。

true

Boolean

validationFailedHandler (verify)

さまざまな検証失敗の状況を処理します。デフォルトの実装は、さまざまな状況に対して特定の例外を出力します (すべての例外はパッケージ名 org.apache.camel.component.xmlsecurity.api を持ち、XmlSignatureInvalidException のサブクラスです。署名値の検証に失敗すると、XmlSignatureInvalidValueException が出力されます。参照の検証に失敗すると、XmlSignatureInvalidContentHashException が出力されます。詳細については、JavaDoc を参照してください。

 

ValidationFailedHandler

xmlSignature2Message (verify)

検証後に XML 署名を出力メッセージにマップする Bean。このマッピングを行う方法は、オプション outputNodeSearchType、outputNodeSearch、および removeSignatureElements によって設定できます。デフォルトの実装では、3 つの出力ノード検索タイプ Default、ElementName、および XPath に関連する 3 つの可能性が提供されます。デフォルトの実装では、ノードが決定され、それがシリアライズされて出力メッセージのボディーに設定されます。 検索タイプが ElementName の場合、出力ノード (この場合は要素でなければなりません) は、検索値で定義されたローカル名と名前空間によって決定されます (オプション outputNodeSearch 参照)。検索タイプが XPath の場合、出力ノードは検索値で指定された XPath によって決定されます (この場合、出力ノードのタイプは Element、TextNode、または Document になります)。出力ノード検索タイプがデフォルトの場合、以下のルールが適用されます: enveloped XML 署名の場合 (URI=と変換 http://www.w3.org/2000/09/xmldsigenveloped-signature を持つ参照があります)、署名要素を持たない入力 XML 文書が出力メッセージボディーに設定されます。非 enveloped XML 署名の場合、メッセージボディーは参照されたオブジェクトから決定されます。これについては、Enveloping XML 署名ケースでの出力ノードの決定の章で詳しく説明されています。

 

XmlSignature2Message

xmlSignatureChecker (verify)

このインターフェイスを使用すると、検証を実行する前に、アプリケーションで XML 署名を確認できます。この手順は http://www.w3.org/TR/xmldsig-bestpractices/check-what-is-signed で推奨されています

 

XmlSignatureChecker

345.5.3. Enveloping XML 署名ケースでの出力ノードの決定

検証後、XML 署名ドキュメントからノードが展開され、最終的に出力メッセージボディーに返されます。enveloping XML 署名の場合、XmlSignature2Message のデフォルト実装 DefaultXmlSignature2Message は、ノード検索タイプ Default に対して次の方法でこれを行います (オプション xmlSignature2Message を参照)。

  • 最初にオブジェクト参照が決定されます。

    • 同じドキュメント参照のみが考慮されます (URI は # で始まる必要があります)
    • マニフェストを介したオブジェクトへの間接的な同じドキュメント参照も考慮されます。
    • オブジェクト参照の結果の数は 1 でなければなりません。
  • 次に、オブジェクトが逆参照され、オブジェクトには XML 要素が 1 つだけ含まれている必要があります。この要素は、出力ノードとして返されます。

これは、enveloping XML 署名が次のいずれかの構造を持つ必要があることを意味します。

<Signature>
      <SignedInfo>
         <Reference URI="#object"/>
         <!-- further references possible but they must not point to an Object or Manifest containing an object reference -->
         ...
      </SignedInfo>

      <Object Id="object">
           <!-- contains one XML element which is extracted to the message body -->
      <Object>
      <!-- further object elements possible which are not referenced-->
      ...
      (<KeyInfo>)?
</Signature>

または構造:

<Signature>
      <SignedInfo>
         <Reference URI="#manifest"/>
         <!-- further references  are possible but they must not point to an Object or other manifest containing an object reference -->
         ...
      </SignedInfo>

      <Object >
         <Manifest Id="manifest">
            <Reference URI=#object/>
         </Manifest>
      </Objet>
      <Object Id="object">
          <!-- contains the DOM node which is extracted to the message body -->
      </Object>
       <!-- further object elements possible which are not referenced -->
      ...
      (<KeyInfo>)?
</Signature>