このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

XML デジタル署名は XML ドキュメントを暗号化されたコードにより署名するための W3C 仕様で、XML ドキュメントが変更されていないことを保証するために使用することができます。MapForce の XML 署名機能では USA-SHA1 ならびに DSA-SHA1 型の証明書がサポートされます。

 

XML 署名に関する詳細については、XML 署名に関する W3C の仕様 https://www.w3.org/TR/xmldsig-core/ を参照ください。

 

MapForce では XML ならびに XBRL 出力ファイルに対して XML デジタル署名の作成がサポートされます。デジタル署名は出力ターゲットがビルトインとなっている場合のみ生成することができます。出力ボタンがクリックされた時、また出力ファイルが保存された時に、生成された結果ファイルに対して署名が作成されます。

 

メモ: MapForce Server はデジタル署名をサポートしません。

 

デジタル署名は出力ドキュメント最後の要素として埋め込むことができるほか、独立した署名ファイルとしても保管することができます。

 

"Enveloped" が選択されている場合、XML ファイルにあるルート要素直下の最後の子要素として署名が作成されます。

"Detached" が選択されている場合、独立したドキュメントとして署名ファイルが生成されます。

デジタル署名の生成を有効にするには:

1.出力コンポーネントのヘッダーをダブルクリックするか、「コンポーネント | プロパティ」を選択することで表示される、出力コンポーネントのコンポーネント設定ダイアログボックスを開きます。

2.デジタル署名を作成チェックボックスを有効にします。

dlg_component_settings_xml_sig

3.必要な設定を入力する XML 署名設定ダイアログボックスが開かれます。(XML 署名設定を参照してください) 。

デジタル署名の設定を変更する:

1.出力コンポーネントのヘッダーをダブルクリックするか、「コンポーネント | プロパティ」を選択することで表示される、出力コンポーネントのコンポーネント設定ダイアログボックスを開きます。

2.署名設定ボタンをクリックして、 XML 署名設定 ダイアログボックスを開きます。

3.設定を入力して 「OK」 をクリックします。

 

例えば、...\MapForceExamples フォルダー内の MarketingExpenses_DetachedSignature.mfd ファイルを使用します:

 

1.MarketingExpenses ターゲットコンポーネントをダブルクリックして、署名設定ボタンをクリックします。選択済みのオプションが表示されています。

2.「OK」をクリックして、ダイアログボックスを閉じます。

3.出力ボタンをクリックして、マッピングの結果を確認します。

 

2 つのファイルがプレビューウィンドウに生成されました。最初のファイル MarketingExpenses.xml はそのターゲットコンポーネントのマッピングの結果です。

xmlsig01

2番目のファイル MarketingExpenses.xml.xsig はターゲットコンポーネントにより生成された一時的なデジタル署名ファイルです。

xmlsig02

署名ファイルを生成するには 「生成された全ての出力を保存する」 ic-save-all-out ツールバーボタンをクリックします。

これで出力ディレクトリに .xml と .xsig ファイルが生成されます。

 

..\MapForceExamples フォルダー内に収められている MarketingExpenses_EnvelopedSignature.mfd ファイルでは、"Enveloped" 設定で生成される署名の出力を確認することができます。  

xmlsig03

 

XML ドキュメントの妥当性

XML 署名が XML ドキュメント内に埋め込まれている場合、http://www.w3.org/2000/09/xmldsig# 名前空間内の Signature 要素が XML ドキュメントに追加されます。スキーマに従うかたちでドキュメントの妥当性を保つには、適切な要素宣言をスキーマ内に含める必要があります。MapForce では Enveloped オプションを使用した署名の埋込みが行われます:

 

Enveloped: 要素がルート(またはドキュメント)要素以下にある最後の子要素として、Signature 要素が作成されます。

 

XML ドキュメントのスキーマに変更を加えたくない場合、"Detached" オプションを使用することで XML 署名を独立した外部ファイルとして作成することができます。

 

Enveloped 署名の Signature 要素を許可するために使用される XML スキーマの抜粋を以下に示します。これらのサンプルをガイドとして、使用中のスキーマを修正することができます。

 

2 つのうちの最初のサンプルでは、XML 署名スキーマがユーザーのスキーマにインポートされます。XML 署名スキーマは以下のアドレスで見つけることができます: http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd

 

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:xsig="http://www.w3.org/2000/09/xmldsig#"
          elementFormDefault="qualified"
          attributeFormDefault="unqualified">
  <xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
            schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
  <xs:element name="Root">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="FirstChildOfRoot"/>
            <xs:element ref="SecondChildOfRoot" minOccurs="0"/>
            <xs:element ref="ThirdChildOfRoot" minOccurs="0"/>
            <xs:element ref="xsig:Signature" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
  </xs:element>
  ...
</xs:schema>

 

以下にある) 2 番目のオプションでは、他の名前空間にある要素全てにマッチするような、全般的なワイルドカード要素が追加されます。processContents 属性を lax にセットすることで、検証の際にこの要素をスキップするようになります—(マッチする要素宣言が見つからないため)。結果として、ユーザーは XML 署名スキーマを参照する必要がなくなります。このオプションの欠点は、XML ドキュメントの妥当性を損なうこと無く、(Signature 要素以外の)全ての要素を特定の場所に追加することができてしまうという点です。

 

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
          elementFormDefault="qualified"
          attributeFormDefault="unqualified">
  <xs:element name="Root">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="selection"/>
            <xs:element ref="newsitems" minOccurs="0"/>
            <xs:element ref="team" minOccurs="0"/>
            <xs:any namespace="##other" minOccurs="0" processContents="lax"/>
        </xs:sequence>
      </xs:complexType>
  </xs:element>
  ...
</xs:schema>

(C) 2020 Altova GmbH