Signatures XML

www.altova.com Imprimer cette rubrique Page précédente Un niveau supérieur Page suivante

Accueil >  Manuel de l'utilisateur et référence > XML >

Signatures XML

Un fichier XML peut être signé numériquement et la signature peut être vérifiée par la suite. Si le fichier a été modifié après la signature, la vérification échouera. XMLSpy prend en charge la création et la vérification des signatures XML.

 

Les signatures XML dans les modes XMLSpy

Des signatures XML peuvent être créées pour tous les types de fichiers XML, y compris pour les fichiers de Schéma XML, WSDL et XBRL. Les commandes XML | Créer une signature Signature et XML | Vérifier la signature XML sont donc disponibles dans tous les modes XMLSpy : Mode Texte, Mode Grille, Mode Schéma, Mode WSDL et Mode XBRL.

 

Comment fonctionnent les signatures XML

Le processus, de la création de la signature jusqu'à la vérification de la signature, fonctionne de la manière suivante :

 

1.Le fichier XML est signé soit avec la clé privée d'un certificat, soit avec un mot de passe. Dans XMLSpy, vous pouvez créer une signature en utilisant la commande the XML | Créer une signature Signature. La signature est obtenue en traitant : (i) le document XML et (ii) la clé privée d'un certificat, ou un mot de passe.
2.La signature peut soit être incluse dans le fichier XML soit stockée dans un fichier séparé.
3.La signature du fichier XML est vérifiée à l'aide de la clé publique du certificat ou du mot de passe. Le processus de vérification fonctionne de la manière suivante : tout d'abord en traitant (i) le document XML, et (ii) la clé privée du certificat, ou un mot de passe, utilisé pour la signature, ensuite, en comparant ce résultat avec la signature. Si le fichier XML est modifié après la signature, la vérification échouera. Dans XMLSpy, vous pouvez vérifier une signature avec la commande XML | Vérifier la signature.

 

Les détails de la création et de la vérification des signatures dans XMLSpy sont décrits dans les sous-sections de cette section :

 

Créer des signatures XML
Vérifier des signatures XML

 

Comment les certificats sont utilisés dans les signatures XML

Pour pouvoir être utilisés avec des signatures XML, les certificats doivent posséder une clé privée et une clé publique. La clé privée sert à créer la signature XML, la clé publique a pour but de vérifier la signature XML.

 

Dans un scénario typique, l'expéditeur d'un document XML a accès à la clé privée d'un certificat et crée la signature XML avec cette clé. Le destinataire du document aura accès à la clé publique du certificat. Cet accès peut être de deux types : (i) l'expéditeur envoie une information de clé publique avec la signature ; (ii) le destinataire aura accès à une clé de version publique du certificat utilisé par l'expéditeur.

 

Pour plus de détails concernant les certificats, voir la sous-section, Travailler avec des certificats.

 

Note :La fonction Signature XML de XMLSpy prend en charge des certificats de type RSA-SHA1, DSA-SHA1 et  SHA-256. Les signatures qui sont basées sur des mots de passe utilisent l'algorithme HMAC-SHA256 (XMLSpy 2018 et plus ; voir Créer les signatures XML).

 

Validité du document XML

Si une signature XML est intégrée dans le document XML , un élément Signature dans l'espace de noms http://www.w3.org/2000/09/xmldsig# est ajouté au document XML. Pour que le document reste valide, conformément à un schéma, le schéma doit contenir les déclarations d'élément appropriées. XMLSpy intègre les signatures de deux manières :

 

Enveloppée : l'élément Signature est créé en tant que le dernier élément enfant de l'élément racine (ou document).
Enveloppante : l'élément Signature est créé en tant que l'élément racine (ou document), et l'élément de document XML original est placé dans un élément enfant de l'élément de signature nommé Object.

 

Si vous ne souhaitez pas modifier le schéma du document XML, la signature XML peut être créée dans un fichier externe. Pour plus de détails, voir la description des options de placement dans la section Créer des signatures XML.

 

Ci-dessous, vous trouverez des extraits du Schéma XML qui montrent comment l'élément Signature d'une signature enveloppée peut être permise. Vous pouvez utiliser ces exemples en tant que guides pour modifier vos propres schémas.

 

Dans la première des deux listes ci-dessous, le Schéma de signatures XML est importé dans le schéma de l'utilisateur. Le Schéma de signatures XML est situé sous l'adresse Internet : 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>

 

Une seconde option (liste ci-dessous) est d'ajouter un élément de caractère générique général qui fait correspondre tout élément depuis d'autres espaces de noms. La configuration de l'attribut processContents sur lax fait passer le validateur sur cet élément, parce qu'aucune déclaration de l'élément correspondant n'a été trouvé. Par conséquent, l'utilisateur n'a pas besoin de référencer le Schéma de signatures XML. L'inconvénient de cette option, néanmoins, est que tout élément (pas seulement l'élément Signature) peut être ajouté à l'emplacement spécifique dans le document XML sans invalider le document XML.

 

<?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>

 

Spécifications W3C

Pour plus de détails concernant les signatures XML, voir les spécifications W3C pour les signatures XML sous https://www.w3.org/TR/xmldsig-core1/.

 


© 2018 Altova GmbH