Cadre d`interopérabilité technique des services AMC
Transcription
Cadre d`interopérabilité technique des services AMC
Cadre d’interopérabilité technique des services AMC Version Date Référence 1.2 13/12/2016 CI_SEL_AMC GIE SESAM-VITALE, maître d’œuvre et expert technique du système 5, boulevard Alexandre Oyon – 72 019 LE MANS Cedex 2 www.sesam-vitale.fr Cadre d’interopérabilité technique des services AMC Ce document a été élaboré par le GIE SESAM-Vitale. Conformément à l’article L.122-4 du Code de la Propriété Intellectuelle, toute représentation ou reproduction (intégrale ou partielle) du présent ouvrage, quel que soit le support utilisé, doit être soumise à l’accord préalable écrit de son auteur. Il en est de même pour sa traduction, sa transformation, son adaptation ou son arrangement, quel que soit le procédé utilisé. Tout manquement à ces obligations constituerait un délit de contrefaçon, au sens des articles L 335-2 et suivants du code de la propriété intellectuelle, susceptible d’entraîner des sanctions pour l’auteur du délit. 13/12/2016 GIE SESAM-Vitale 2 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Historique des versions Date Version 30 sept. 2016 1.0 Évolution du document Première version du document 15 nov. 16 1.1 Mise à jour de la norme 1779 de représentation du DN (X509) par la norme 2253. (https://2rfc.net/2253) 13 dec. 16 1.2 Ajout de la structure XML <Erreur2>. Cette structure est l’évolution de la structure XML <Erreur> portée par l’erreur SOAP. Elle est enrichie d'un contact AMC. 13/12/2016 GIE SESAM-Vitale 3 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Tables des matières Historique des versions ........................................................................... 3 Tables des matières ................................................................................. 4 Glossaire ................................................................................................. 5 Chapitre 1 Introduction....................................................................... 6 1.1 Objet du document ....................................................................6 1.2 Contenu du document ................................................................6 1.3 Périmètre de l’interopérabilité ...................................................7 Chapitre 2 Spécifications .................................................................... 9 2.1 Référentiels externes .................................................................9 2.2 Principales normes utilisées ......................................................9 2.3 Quelques concepts communs ..................................................11 Chapitre 3 Sécurité d’accès .............................................................. 14 3.1 Principe général .......................................................................14 3.2 Authentification directe d’une personne physique ..................16 3.3 Authentification par délégation d’une personne physique ......17 3.4 Authentification directe d’une personne morale .....................18 3.5 Assertion SAML......................................................................19 Chapitre 4 4.1 Les échanges ................................................................... 25 Les requêtes SOAP ..................................................................27 4.1.1 Header SOAP ......................................................................28 4.1.2 Body SOAP.........................................................................31 4.2 Les réponses SOAP .................................................................31 4.3 Les erreurs SOAP ....................................................................32 Chapitre 5 Le document métier ........................................................ 36 5.1 Structure ..................................................................................36 5.2 La signature des documents métier .........................................37 13/12/2016 GIE SESAM-Vitale 4 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Glossaire AMC AMO CNDA CPx ES LPS OTP PS RGI RGS SAAS SAML SIH SI-PS SOA SOAP TLS URN UTC UUID WSDL Assurance Maladie Complémentaire Assurance Maladie Obligatoire Centre National d’Agrément Carte du Professionnel de Santé de l’ASIP Santé Établissement de santé Progiciel du Professionnel de Santé Opérateur de Tiers Payant Professionnel de Santé Référentiel Général d’Interopérabilité Référentiel Général de Sécurité Software as a Service Security assertion markup language Système d’information Hospitalier Système d’information du PS Service Oriented Architecture Simple Object Access Protocol Transport Layer Security Uniform Resource Name Coordinated Universal Time Universally Unique IDentifier Web Services Description Language 13/12/2016 GIE SESAM-Vitale 5 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Chapitre 1 Introduction 1.1 Objet du document Ce document décrit les aspects techniques et sécuritaires à mettre en œuvre lors de l’interrogation des web-services offerts par les Assurances Maladies Complémentaires (AMC). 1.2 Contenu du document Le cadre d’interopérabilité technique fixe les questions relatives aux protocoles d’échanges de données et à la sécurité des appels. Outre cette introduction, le document comporte les chapitres suivants : − − − − Le chapitre 2 présente les normes utilisées. Le chapitre 3 décrit les schémas de sécurité. Le chapitre 4 spécifie les échanges. Le chapitre 5 décrit les éléments techniques des documents métier. 13/12/2016 GIE SESAM-Vitale 6 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 1.3 Périmètre de l’interopérabilité Ce document traite des questions d’interopérabilité dans les différents cas illustrés dans la figure 1 ci-dessous. Le terme système d’information du PS (SI-PS) définit le moyen technique utilisé par le Professionnel de Santé (PS) pour se connecter. Cela peut être un Logiciel du Professionnel de Santé (LPS), un Système d’Information Hospitalier (SIH), ou un système d’information opéré par un éditeur. Le terme système cible définit une organisation AMC au sens large. Cela peut être une AMC, un Opérateur de Tiers Payant (OTP), ou un frontal regroupant plusieurs AMC. Figure 1 – Périmètre du cadre d’interopérabilité 13/12/2016 GIE SESAM-Vitale 7 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Trois principaux cas d’usage sont donc identifiés. (a) Le cadre d’interopérabilité technique s’applique aux échanges entre un LPS d’un PS et un système cible. Le PS utilise sa Carte du Professionnel de Santé de l’ASIP Santé (CPx) pour s’authentifier directement auprès du système cible. Le poste de travail dispose d’un dispositif de lecture de CPx. (b) Le cadre d’interopérabilité technique s’applique aux échanges entre un système d’information d’un éditeur (en mode Saas) et un système cible. Le PS utilise un LPS pris en charge par un système d’information d’un éditeur qui s’authentifie auprès du système cible au moyen d’un certificat logiciel d’authentification pour personne morale. Cependant, l’accès au système cible nécessite que chaque PS soit identifié nominativement ; il est donc indispensable que le système d’information de l’éditeur mette en œuvre par délégation une politique d’authentification cohérente avec celle du système cible et qu’il soit en mesure de fournir l’identifiant du PS à l’origine des transactions. (c) Le cadre d’interopérabilité technique s’applique aux échanges entre une personne morale (un établissement hospitalier, une structure de soins, un centre de santé…) et un système cible. L’utilisateur (agents, PS...) sous la responsabilité de la personne morale, sollicite un service en utilisant le système d’information de la structure. C’est cette structure qui s’authentifie auprès du système cible au moyen d’un certificat logiciel d’authentification pour personne morale. Les autorisations d’accès sont liées uniquement aux caractéristiques de la structure. 13/12/2016 GIE SESAM-Vitale 8 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Chapitre 2 Spécifications 2.1 Référentiels externes Les technologies utilisées ici sont compatibles avec ceux du cadre d’interopérabilité des SIS de l’ASIP Santé 1 et ceux des télé-services de l’Assurance Maladie Obligatoire (AMO). Le cadre d’interopérabilité technique des AMC est également cohérent avec le Référentiel Général d’Interopérabilité (RGI) 2.0 (Profil P2) promu par l’État français 2. 2.2 Principales normes utilisées Le choix de la pile de protocoles du cadre d’interopérabilité technique est basé sur les spécifications du Basic Profile Version 2.0 3. TLS 1.x est un protocole de sécurisation des échanges sur Internet. Le protocole Transport Layer Security (TLS) permet de satisfaire aux objectifs de sécurité suivants : – – – – l’authentification du serveur ; la confidentialité des données échangées (ou session chiffrée) ; l’intégrité des données échangées ; de manière optionnelle, l’authentification du client. La version 1.2 ou ultérieure doit être retenue pour ce standard. (conforme au Référentiel Général de Sécurité (RGS)). https://fr.wikipedia.org/wiki/Transport_Layer_Security 1 http://esante.gouv.fr/services/referentiels/ci-sis http://references.modernisation.gouv.fr/sites/default/files/ 3 http://ws-i.org/profiles/BasicProfile-2.0-2010-11-09.html 2 13/12/2016 GIE SESAM-Vitale 9 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC HTTP 1.1 est un protocole de communication client-serveur développé pour le web. La version 1.1 actualisée en 2014 est recommandée. La version sécurisée HTTPS doit être utilisée. https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol XML ou « langage de balisage extensible » est un langage informatique de balisage générique. Cette syntaxe est dite « extensible », car elle permet de définir différents espaces de noms, c’est-à-dire des langages avec chacun leur vocabulaire et leur grammaire, comme XHTML, XSLT, RSS, SVG... Elle est reconnaissable par son usage des chevrons (< >) encadrant les balises XML. L’objectif initial est de faciliter l’échange automatisé de contenus complexes (arbres, texte riche...) entre systèmes informatiques hétérogènes (interopérabilité). http://www.w3.org/TR/REC-xml SOAP 1.2 Simple Object Access Protocol (SOAP) spécifie le format des messages ainsi que les informations sur le message luimême permettant son acheminement et son traitement. http://www.w3.org/standards/techs/soap SAML 2.0 est un protocole pour échanger des informations d’authentification et d’autorisation entre des parties, en particulier entre un fournisseur d’identité et un fournisseur de service. Basé sur le langage XML. SAML propose l’authentification unique (en anglais single sign-on ou SSO) sur le web. De cette manière, un utilisateur peut naviguer sur plusieurs sites différents en ne s’authentifiant qu’une seule fois. https://fr.wikipedia.org/wiki/Security_assertion_markup_language XML Signature (aussi nommé XMLDsig, XML-DSig, XML-Sig) est une recommandation du W3C destinée à permettre l’utilisation de signatures numériques dans les documents XML. Tout comme les techniques générales de cryptographie à clef publique qu’elle met en œuvre, elle permet d’assurer l’authentification, l’intégrité et par voie de conséquence la nonrépudiation des données signées, mais en tirant profit de la souplesse offerte par le langage XML. http://www.w3.org/TR/2008/REC-xmldsig-core-20080610 13/12/2016 GIE SESAM-Vitale 10 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC XSD ou XML Schema est un langage de description de format de document XML permettant de définir la structure et le type de contenu d’un document XML. Cette définition permet notamment de vérifier la validité de ce document. http://www.w3.org/XML/Schema WSDL est une grammaire XML permettant une interface d’accès à un web-service. Cette description est fondée sur le XML qui indique « comment communiquer pour utiliser le service ». http://www.w3.org/TR/wsdl20/ http://schemas.xmlsoap.org/wsdl/soap12/WSDL11SOAP12.pdf 2.3 Quelques concepts communs UUID L’algorithme Universally Unique IDentifier (UUID) permet à des systèmes distribués d’attribuer de façon unique un identifiant à des informations sans coordination centrale. On parle d’identifiants « différents avec une haute probabilité ». Un UUID se présente habituellement sous sa forme canonique, c’est-à-dire composée de groupes de caractères hexadécimaux en minuscules séparés par des tirets. Par exemple : 110e8400-e29b-11d4-a716-446655440000 C’est-à-dire 8-4-4-4-12 pour un total de 36 caractères (32 alpha numériques caractères et 4 « - »). https://en.wikipedia.org/wiki/Universally_unique_identifier 13/12/2016 GIE SESAM-Vitale 11 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC URN Le terme Uniform Resource Name (URN) traduit littéralement de l’anglais par « nom uniforme de ressource » permet de désigner une ressource de manière unique. Les URN ont la syntaxe suivante : urn:NID:NSS – – – urn est la méthode d’URI des URN. NID (Namespace Identifier) est un identificateur d’espace de noms. NSS (Namespace specific String) est la partie spécifique à l’espace de noms identifié par le NID. L’interprétation syntaxique de cette partie dépend de l’espace de noms. Par exemple : urn:isbn:0451450523 https://en.wikipedia.org/wiki/Uniform_Resource_Name http://www.yoyodesign.org/doc/w3c/uri-clarification/ https://tools.ietf.org/html/rfc2141 Date et heure Le format date et heure choisi est celui défini par XML (xs:dateTime). Elle est de type YYYY-MM-DDThh:mm:ss+/-hh:mm avec +hh:mm/-hh:mm est le décalage par rapport à l’heure UTC. En l’absence de consigne spécifique, l’heure est exprimée en heure locale avec décalage horaire UTC. Par exemple : 2016-06-12T10:15:30+04:00 Dans certains cas, l’heure peut être demandée en UTC. Son format est du type YYYY-MM-DDThh:mm:ssZ. On inscrit littéralement un Z final lorsqu’il s’agit de l’heure UTC. Par exemple : 2016-06-22T06:00:00Z Quel que soit le cas, le LPS doit synchroniser son heure pour des problématiques d’horodatage des données, de traçabilité et de sécurité. Le LPS peut par exemple utiliser le pool de serveurs de temps français fr.pool.ntp.org. http://www.w3.org/TR/xmlschema-2/#dateTime 13/12/2016 GIE SESAM-Vitale 12 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Date Le format de date choisi est celui défini par XML (xs:date) sans décalage horaire. Par exemple : 2016-06-22 http://www.w3.org/TR/xmlschema-2/#date ID Dans le langage XML les identifiants ID (unique identifiers) sont des xs:NCName ayant pour contraint d’être unique dans le document XML. La valeur doit se composer exclusivement de lettres, de chiffres, de traits d’union et de points. Les chiffres, le trait d’union et le point ne peuvent être utilisés en premier. Espace de nommage Tous les services d’un domaine sont regroupés sous un même espace de nommage (namespace). Par exemple : xmlns="urn:amc:med". Tous les éléments XML inter domaine, tel que les en-têtes XML du cadre d’interopérabilité (chap. 4.1) sont dans l’espace de nommage xmlns="urn:amc:ci". Version de service Un élément XML n’est jamais modifié. En cas d’évolution, un nouvel élément XML est créé. Par exemple, si la définition fonctionnelle d’une adresse postale doit être modifiée, la structure XML initiale <adresse> est conservée et une nouvelle structure XML <adresse2> est créée. Les deux structures cohabitent dans le nouveau schéma XSD sans modification de l’espace de nommage. De la même manière, en cas d’évolution fonctionnelle, le service initial est conservé et un nouveau service est systématiquement créé garantissant la compatibilité des schémas XSD. 13/12/2016 GIE SESAM-Vitale 13 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Chapitre 3 Sécurité d’accès 3.1 Principe général Figure 2 – Sécurité (a) La sécurisation des échanges repose sur l’établissement d’une liaison réseau TLS 1.2 avec authentification du système cible. Le protocole TLS assure la confidentialité et l’intégrité des données échangées. − La cipher suite utilisée. TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA256 doit être (b) Chaque système cible possède un certificat serveur X.509 issue d’une autorité de certification du GIE SESAM-Vitale. Le SI-PS doit le valider pour s’assurer de communiquer avec un système cible AMC. − Le SI-PS doit vérifier la signature du certificat du service cible, sa parenté (l’autorité) et les dates de début et de fin de validité. − Il est recommandé que le SI-PS effectue un contrôle de révocation du certificat du système cible. − Les certificats du système cible et de l’autorité de certification (AC) ont une durée de vie limitée. Il faut donc prévoir leurs renouvellements. Pour faciliter cette opération, le SI-PS doit savoir gérer (par configuration) au moins deux certificats d’autorités du certificat serveur du système cible : une autorité en fin de vie et la nouvelle. 13/12/2016 GIE SESAM-Vitale 14 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC (c) Le client SI-PS (LPS, SI, Éditeur) génère et transmet une assertion SAML 2.0. C’est un document XML signé par le certificat X.509 de l’ASIP Santé. − Le système cible doit vérifier la signature de l’assertion SAML ce qui lui apporte la preuve de la possession d’un moyen d’authentification fourni par l’ASIP Santé (ou une autorité de certification autorisée par les AMC), et identifie de manière certaine le client. − Le système cible doit valider le certificat présenté par le client : vérification de sa parenté (l’autorité) et des dates de début et de fin de validité. − Le système cible doit effectuer un contrôle de révocation du certificat du client. Lorsque le système cible et le client se sont authentifiés mutuellement, les contrôles d’autorisation sont réalisés. 13/12/2016 GIE SESAM-Vitale 15 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 3.2 Authentification directe d’une personne physique Un PS (personne physique) sollicite directement le système cible sous sa propre responsabilité en utilisant son LPS et sa carte CPx. Le LPS génère l’assertion SAML, puis la signe à l’aide de la CPx et enfin l’ajoute dans toutes ses requêtes vers le système cible. Pour signer avec la CPx, le logiciel peut utiliser la cryptolib de l’ASIP Santé (http://integrateurs-cps.asipsante.fr/). L’assertion SAML est valable 1 heure pour tous les web-services. Tant que sa durée de vie n’est pas dépassée, l’assertion peut être réutilisée. Elle peut donc être générée et signée avant de solliciter les webservices. La CPx n’est pas non plus sollicitée systématiquement lors de chaque accès aux web-services. Figure 3 – Authentification directe 13/12/2016 GIE SESAM-Vitale 16 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 3.3 Authentification par délégation d’une personne physique Un PS accède au système cible au travers d’un système d’information opéré par une personne morale. Celui-ci met en œuvre des dispositifs d’authentification des PS cohérents avec ceux exigés pour une authentification directe. Le système d’information s’authentifie auprès du système cible sous sa propre responsabilité et propage vers le système cible l’identité du PS qu’il a authentifié. Ce cas correspond, par exemple, aux éditeurs offrant un service mode SaaS à valeur ajoutée dont l’une des composantes est l’authentification directe du PS sur ses propres machines et la prise en charge de l’authentification sur le système cible. Dans ce cas, une nouvelle assertion est générée systématiquement par l’éditeur pour chaque échange. Elle est signée par le certificat logiciel de l’éditeur. Le système cible vérifie que l’assertion SAML et attribue les autorisations sur la base de l’identité du PS. Figure 4 – Authentification par délégation 13/12/2016 GIE SESAM-Vitale 17 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 3.4 Authentification directe d’une personne morale Une personne morale (ES ou assimilé) sollicite le système cible sous sa propre responsabilité. Elle est pleinement responsable des actions de ses agents. Elle définit et elle assure elle-même les modalités d’authentification et de contrôle d’accès de ses agents en vers le système cible. La personne morale est elle-même authentifiée de manière appropriée auprès du système cible. Dans ce cas, une assertion SAML est générée par le SIH de l’ES pour chaque échange. Elle est signée par le certificat logiciel de l’ES et contient l’identité de l’ES. Le système cible vérifie que l’assertion SAML et attribue les autorisations sur la base de l’identité de l’ES. Figure 5 – Authentification directe d’une personne morale 13/12/2016 GIE SESAM-Vitale 18 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 3.5 Assertion SAML L’utilisation de l’assertion respecte la standardisation WS-I Basic Security Profile 1.1, notamment les recommandations WS-Security SAML Token Profile 1.1 pour ce qui concerne le contenu de l’assertion et son utilisation avec l’en-tête WS-Security. L’assertion SAML ne contient pas d’élément fonctionnel. Elle est exploitée pour autoriser l’exécution du service et peut être conservée comme preuve d’accès. Voici la déclinaison de l’assertion pour le cadre d’interopérabilité des web-services AMC. Son espace de nommage des assertions SAML est urn:oasis:names:tc:SAML:2.0:assertion. Son espace de nommage de la signature XMLDsig est http://www.w3.org/2000/09/xmldsig#. Les alias d’espaces de nommage (ici suivant les environnements. saml : et ds :) peuvent varier <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" version="2.0" [1] ID="ID" [1] IssueInstant="...[1]"> <saml:Issuer Format="... [1]">... </saml:Issuer> [1] <ds:Signature>... </ds:Signature> [1] <saml:Subject> <saml:NameID NameQualifier="..." [1]>... </saml:NameID> [1] </saml:Subject> [1] <saml:AttributeStatement> [1] <saml:Attribute Name="..."> [1..N] <saml:AttributeValue>... </saml:AttributeValue> [1] </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> Les éléments suivants de l’assertion doivent être renseignés : Version (obligatoire) Cet attribut XML contient la version du standard SAML. Il prend la valeur "2.0". 13/12/2016 GIE SESAM-Vitale 19 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC ID (obligatoire) Cet attribut XML (xs:NCNAME) est l’identifiant de l’assertion. Il est composé du caractère "_" suivi d’un UUID. C’est-à-dire ID ::="_"<UUID> Par exemple : _f81d4fae-7dec-11d0-a765-00a0c91e6bf6 IssueInstant (obligatoire) Cet attribut XML (xs:dateTime) contient l’horodatage de l’assertion au format UTC (au format AAAA-MM-JJThh:mm:ss.sZ). Par exemple : 2016-06-02T15:38:58Z <Issuer> (obligatoire) Cette balise XML contient l’identité de l’émetteur de l’assertion. C’est le DN présent dans le certificat X.509 de signature. La représentation textuelle du DN doit être conforme à la RFC 2253 « UTF-8 String Representation of Distinguished Names » de décembre 1997. Format (obligatoire) Cet attribut XML contient le format du DN de certificat. La valeur est fixée à : Format="urn:oasis:names:tc:SAML:1.1:nameid- format:X509SubjectName". <Signature> (obligatoire) Cette balise XML contient la signature XMLDsig (voir cidessus). <Subject><NameID> (obligatoire) Cette balise XML contient l’identifiant de portée nationale de la personne physique (PS) ou morale (ES) responsable du traitement 4. 4 http://esante.gouv.fr/sites/default/files/pgssi_referentiel_d_identification_v1.0.pdf 13/12/2016 GIE SESAM-Vitale 20 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Dans le cas de l’utilisation d’un certificat de l’ASIP Santé, cette balise XML contient la valeur du champ CN du DN du certificat de l’ASIP Santé. Ce numéro intègre un préfixe 5 attribué par l’ASIP Santé. <Subject><NameID@NameQualifier> (obligatoire) Cet attribut XML porte l’autorité d’affectation de l’identifiant de la personne physique (PS) ou morale (ES). Dans le cas de l’utilisation d’un certificat de l’ASIP Santé, l’autorité d’affectation de l’identifiant est l’ASIP Santé et non l’autorité qui a attribué l’identifiant national. L’attribut XML est alors valorisé avec le contenu du champ gipCardType de la CPx. C’est-à-dire : – "CPS" ; – "CPF" ; – "CDE-CPE" ; – "CPA". Dans le cas d’utilisation de moyen d’authentification différent de ceux de l’ASIP Santé, l’attribut XML porte l’autorité d’attribution de l’identifiant national. C’est à dire : – – Pour une personne physique (PS) : o o o "RPPS" ; "ADELI" ; "Local" - o o "SIREN" ; "SIRET". pour un identifiant de portée locale via une identification indirecte. Pour les personnes morales (ES) : o "FINESSEJ" (FINESS juridique) ; o "FINESSET" (FINESS établissement) ; <AttributeStatement> (obligatoire) Si une assertion comporte des attributs <Attribute> autres que celui défini ci-dessous, le système cible devra les accepter. 5 http://www.esante.gouv.fr/sites/default/files/CI-SIS_ANX_SOURCES-DONNEESPERSONNES-STRUCTURES_V1.3.1.pdf 13/12/2016 GIE SESAM-Vitale 21 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC <Attribute@Name> (obligatoire) Cet attribut XML est Name="identifiantFacturation". une constante égale à <AttributeValue> (obligatoire) Cette balise XML contient l’identifiant du "responsable" du traitement. C’est sur cet identifiant que seront réalisés les contrôles d’accès. Chaque service spécifiera l’origine de cette information. Dans une grande majorité des cas : – – – Pour une authentification directe d’une personne physique, ce numéro est le numéro de facturation du PS. Pour une authentification par délégation, ce numéro est également le numéro de facturation du PS. pour une authentification directe d’une personne morale, ce numéro prend la forme suivante : <FINESS JUR>"/"<FINESS ET> 13/12/2016 GIE SESAM-Vitale 22 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC La signature XMLDesig est composée comme suit : <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="..."/> [1] <ds:SignatureMethod Algorithm="..."/> [1] <ds:Reference URI="..."> [1] <ds:Transforms>[1] <ds:Transform Algorithm="..."/>[1] <ds:Transform Algorithm="..."/>[1] </ds:Transforms> <ds:DigestMethod Algorithm="..."/>[1] <ds:DigestValue> ... </ds:DigestValue>[1] </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> ... </ds:SignatureValue> [1] <ds:KeyInfo> [1] <ds:X509Data> [1] <ds:X509Certificate> ... </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> Les éléments suivants de la signature doivent être renseignés : CanonicalizationMethod@Algorithm (obligatoire) Cet attribut XML définit l’algorithme de canonisation de la balise XML <Reference>. L’algorithme utilisé est : Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#". SignatureMethod@Algorithm (obligatoire) Cet attribut définit l’algorithme de signature de la balise XML <Reference>, c’est-à-dire : Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256". Reference@URI (obligatoire) Cet attribut XML porte URI (au format "#"+ID) de l’identifiant de l’assertion SAML (<Assertion ID="...">). Transform@Algorithm (obligatoire) On utilise ici une signature enveloppée. C’est-à-dire que la balise XML <signature> est incluse dans l’assertion SAML. Cet attribut XML est donc valorisé à : Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature". 13/12/2016 GIE SESAM-Vitale 23 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Transform@Algorithm (obligatoire) On décrit l’algorithme de canonisation C14N utilisé sur la balise XML de l’assertion SAML. Cet attribut XML est donc valorisé à: Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#". DigestMethod@Algorithm (obligatoire) On utilise une méthode de prétraitement SHA-256 pour calculer le digest de l’assertion SAML. Cet attribut XML est donc valorisé à : Algorithm="http://www.w3.org/2001/04/xmlenc#sha256". <DigestValue> (obligatoire) Cette balise XML contient le résultat du digest de l’assertion SAML référencée par l’attribut XML Reference@URI. <SignatureValue> (obligatoire) Cette balise XML contient le résultat de la signature. <X509Certificate> (obligatoire) Cette balise XML contient le certificat X.509 de signature. 13/12/2016 GIE SESAM-Vitale 24 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Chapitre 4 Les échanges Figure 6 – Échange SOAP Ces échanges respectent les principes décrits dans le document SOAP HTTP Binding 1. Les requêtes et les réponses sont des messages SOAP 1.2 transmis sur le protocole HTTP 1.1. Les requêtes doivent être encodées en UTF-8. L’en-tête HTTP Content-Type doit être positionné à : Content-Type=application/soap+xml; charset="utf-8" Le codage littéral doit être utilisé ; l’élément présent dans le message SOAP 6. encodingStyle n’est pas POST/nomService HTTP/1.1 Host:server.example.fr Content-Type:application/soap+xml; charset="utf-8" Content-Length:nnnn 6 http://www.w3.org/TR/2003/REC-soap12-part2-20030624 13/12/2016 GIE SESAM-Vitale 25 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC L’en-tête SOAPAction n’est pas positionné ici, car c’est une spécificité SOAP 1.1. Néanmoins certains environnements d’exécution la positionnent automatiquement cet en-tête. Dans ce cas, cet en-tête est décrit dans le WSDL, et elle peut prendre la forme suivante : "SOAPAction=""<NS_Service>":"<VersNorme>""" avec : <NS_Service> <VersNorme> Ce l’espace de nom du service. C’est la version de la norme du web-service invoqué. Par exemple : soapAction="urn:amc:med:clc" Les réponses peuvent prendre l’une des deux formes suivantes : réponses positives ou erreur SOAP. HTTP/1.1 200 OK Content-Type:application/soap+xml; charset="utf-8" Content-Length:nnnn Une réponse positive possède un code de statut HTTP égal à 200 et contient toujours un message SOAP. Si une erreur se produit, plusieurs cas sont à envisager : − Si une erreur intervient au niveau du protocole HTTP, les codes de statut HTTP sont utilisés. Cette réponse ne contient pas de message SOAP. − Si le corps du message contient une erreur SOAP, le code de statut HTTP est soit 400 pour une erreur imputée au client soit 500 pour une erreur imputable au serveur. Type de réponse Code HTTP Description Erreur HTTP 4xx, 5xx Tous types d’erreurs HTTP. La réponse ne contient pas de message ni d’erreur SOAP. Erreur SOAP 400, 500 Tous types d’erreurs SOAP. La réponse contient une erreur SOAP. Aucune erreur 13/12/2016 200 La réponse contient un message SOAP. GIE SESAM-Vitale 26 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 4.1 Les requêtes SOAP Figure 7 – Requête SOAP Une requête SOAP est composée d’un en-tête (<Header>) et d’un corps de message (<Body>). L’en-tête permet de véhiculer toutes les informations nécessaires au contrôle d’accès, à la traçabilité et au routage de la requête vers le service fonctionnel final. Le corps de message véhicule un document métier propre au service. <soap:Envelope> <soap:Header> ... </soap:Header> [1] <soap:Body> ... </soap:Body> [1] </soap:Envelope> Attention, l’alias d’espace de nommage (ici les environnements. 13/12/2016 soap :) GIE SESAM-Vitale peut varier suivant 27 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 4.1.1 Header SOAP Un message SOAP possède 3 en-têtes obligatoires. − L’en-tête Message ; − L’en-tête LPS ; − L’en-tête WS-Security. <soap:Header> <ci:Message> ... </ci:Message> <ci:LPS> ... </ci:LPS> <wsse:Security> ... </wsse:Security> </soap:Header> L’en-tête Message Cet en-tête contient toutes les informations nécessaires à la gestion, à la traçabilité et au routage des échanges. Son espace de nommage est urn:amc:ci. L’alias de l’espace de nommage (ici ci :) peut varier suivant les environnements. <ci:Message xmlns:ci="urn:amc:ci"> <ci:Id> ... </ci:Id> [1] <ci:Horodatage> ... </ci:Horodatage> [1] <ci:Adressage> ... </ci:Adressage> [1] <ci:Type> ... </ci:Type> [0..1] </ci:Message> Avec : <Id> (obligatoire) Cette balise XML contient l’identifiant unique de la requête. Ce numéro prend la forme d’un UUID sous sa forme canonique et doit être régénéré à chaque nouvelle requête. Par exemple : 06c6bece-28d6-11e6-86d7-e6618c2586e4 <Horodatage> (obligatoire) Cette balise XML contient la date et l’heure de création de la requête sous la forme xs:dateTime localisée. Par exemple : 2016-11-17T14:15:30+02:00 13/12/2016 GIE SESAM-Vitale 28 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC <Adressage> (obligatoire) Cette balise XML contient l’adresse du web-service cible. Elle prend la forme d’une URN. Le CI offre un mécanisme flexible pour étendre les capacités de routage sans connaître au préalable les règles à appliquer. L’URN composée comme suit (décrit dans le format BNF 7) : URN::="urn:amc :"<NumAMC>" :"<TypeConv>" :"<CSR>" :"<DomConv>" :"<Norme>" :"<VersNorme>" :"<Srv> avec : amc <NumAMC> <TypeConv> <CSR> <DomConv> <Norme> <VersNorme> <Srv> Cette constante définit le contenu qui suit et donne un nom à l’algorithme de routage. Le cadre d’interopérabilité peut être étendu sur ce point en fournissant d’autres critères de routage qui dans ce cas aurait un autre identifiant. Numéro d’AMC. Code Type Convention. Critère secondaire. Ce code représente le domaine sur lequel porte la convention signée entre le Prestataire de Soins et l’AMC (ou son représentant) Exemple : Radiologie, Biologie, Optique, Séjour hospitalier, soins externes. C’est l’identifiant de la norme du web-service invoqué. C’est la version de la norme du web-service invoqué. C’est l’identifiant du service invoqué. <Type> (optionnel) Cette balise XML contient une valeur caractérisant le flux. Elle peut prendre la valeur EDITEUR, SONDE... Si cette balise XML n’est pas présente, la requête est considérée comme provenant d’un éditeur (ce qui est le cas par défaut). 7 https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form 13/12/2016 GIE SESAM-Vitale 29 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC L’en-tête LPS Cet en-tête contient toutes les informations d’identification du SI-PS. Son espace de nommage est urn:amc:ci. L’alias de l’espace de nommage (ici ci) peut varier suivant les environnements. <ci:LPS xmlns:ci="urn:amc:ci"> <ci:Id> ... </ci:Id> [1] <ci:Nom> ... </ci:Nom> [1] <ci:Version> ... </ci:Version> [1] <ci:Editeur> ... </ci:Editeur> [1] <ci:Instance> ... </ci:Instance> [1] </ci:LPS> Avec : <Id> (obligatoire) Le SI-PS reçoit un numéro d’autorisation attribué par le Centre National de Dépôt et d’Agrément (CNDA). Ce numéro est contrôlé par le système cible. Cette balise XML prend la forme d’une URN composée du préfixe urn:cnda : puis du numéro attribué par le CNDA. Par exemple : urn:cnda:1223457 L’éditeur s’engage à garder secret ce numéro et à se prémunir de la mise en œuvre de ce numéro dans d’autres logiciels que ceux référencés. <Nom> (obligatoire) Cette balise XML contient le nom du logiciel. <Version> (obligatoire) Cette balise XML contient la version du logiciel attribuée par l’éditeur. <Editeur> (obligatoire) Cette balise XML contient le nom de l’éditeur. 13/12/2016 GIE SESAM-Vitale 30 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC <Instance> (obligatoire) Cette balise XML contient l’identifiant d’installation du logiciel. Cet identifiant est généré lors de l’installation du LPS. Cet identifiant prend la forme d’un UUID sous sa forme canonique. Il doit être pérenne pour une installation d’un logiciel. Ce numéro est une aide au support, car il permet de regrouper les requêtes d’un même logiciel et permet de compter le nombre de logiciels accédant au web-service. L’en-tête WS-Security Selon les spécifications d’OASIS Web Services Security (WSS) TC, l’en-tête <wsse:Security> fournit un mécanisme pour attacher des assertions. Les alias d’espaces de nommage (ici saml : et wsse :) peuvent varier suivant les environnements. <wsse:Security xmlns:wsse="..."> <saml:Assertion xmlns:saml="..."> ... </saml:Assertion> </wsse:Security> 4.1.2 Body SOAP Le body SOAP d’une requête contient un document métier. 4.2 Les réponses SOAP Une réponse SOAP est composée uniquement d’un corps de message (<Body>) qui véhicule un document métier propre au service. Aucun en-tête n’est retourné par le web-service. <soap:Envelope> <soap:Body> ... </soap:Body> [1] </soap:Envelope> L’alias d’espace de nommage (ici vices et les AMC. soap :) peut varier suivant les ser- Le body SOAP d’une réponse contient un document métier. 13/12/2016 GIE SESAM-Vitale 31 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 4.3 Les erreurs SOAP Après la réussite d’un accès au niveau de la couche du protocole HTTP, la requête SOAP est traitée par le web-service. Cette opération ne génère plus de réponse d’erreur au niveau de HTTP. Les seules erreurs qui peuvent être générées sont des erreurs SOAP. Lorsque des erreurs SOAP sont générées, elles ont un code de statut HTTP 400 ou 500. Chaque service spécifiera les erreurs qui lui sont propres. Hors, consigne particulière décrite dans les spécifications, − le SI-PS doit afficher le libellé de l’erreur (la balise XML <soap:Reason><soap:Text>). − Il est également recommandé d’afficher le code erreur la (balise XML <soap:Subcode><soap:Value>) pour faciliter les échanges du PS avec son support éditeur. Il est recommandé au SI-PS de conserver la totalité de l’erreur SOAP afin de faciliter le diagnostic de l’erreur. Les alias d’espaces de nommage (dans l’exemple ci-dessous peuvent varier suivant les services et les AMC. soap : et ci :) Les erreurs SOAP sont structurées sous forme standard de FAULT SOAP 8. <soap:Fault> <soap:Code> [1] <soap:Value> ... </soap:Value> [1] <soap:Subcode> <soap:Value> ... </soap:Value> [1] </soap:Subcode> </soap:Code> <soap:Reason> <soap:Text> ... </soap:Text> [1] </soap:Reason> <soap:Detail> ... </soap:Detail> [1] </soap:Fault> 8 https://www.w3.org/TR/soap12-part1/#soapfault 13/12/2016 GIE SESAM-Vitale 32 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Avec : <Code><Value> (obligatoire) Cette balise XML contient la classe de l’erreur xs:QName. Les codes d’erreurs SOAP utilisent le préfixe de l’espace de nommage http://www.w3.org/2003/05/soap-envelope comme préfixe. Celui-ci peut prendre les valeurs suivantes : – soap:Sender pour les erreurs imputables au client. Cela indique une erreur liée à l’émetteur du flux (erreur imputable au contenu du message) et correspond souvent aux erreurs applicatives, protocolaires ou liées à la sécurité (exemple : l’utilisateur n’a pas les droits d’accès) ou erreurs techniques du client (exemple : le message est mal formaté). – soap:Receiver pour les erreurs imputables au webservice. Cela indique une erreur liée au récepteur du flux et correspond aux erreurs techniques (ex SGBD inaccessible, indisponibilité, problème du parseur XML...). – D’autres classes d’erreur existent telles que soap:VersionMismatch, soap:MustUnderstand, soap:DataEncodingUnknown. – Chaque code est associé à un code de statut HTTP 9. 9 Classe d’erreur Code HTTP soap:VersionMismatch 500 soap:MustUnderstand 500 soap:Sender 400 soap:Receiver 500 soap:VersionMismatch 500 http://www.w3.org/TR/2003/REC-soap12-part2-20030624 13/12/2016 GIE SESAM-Vitale 33 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC <Subcode><Value> (obligatoire) C’est le code d’erreur propre au web-service. Chaque code d’erreur est associé à un message dans la balise XML <Reason> et à une description dans la balise XML <Detail>. Un code d’erreur est un xs:QName 10. C’est à dire un nom qualifié du type <prefixe>:<texte> de forme NCName:NCName. Les codes d’erreurs communs utilisent l’espace de nommage est urn:amc:ci dont le préfixe est "amc". Les codes d’erreur ne peuvent commencer par un chiffre. <Reason><Text> (obligatoire) Cette balise XML porte la description textuelle de l’erreur qui est exploitée par le LPS comme message d’erreur pour le PS. <Detail> (obligatoire) Cette balise XML contient des indications supplémentaires. L’élément <detail> inclut une structure XML définie par les AMC hors des spécifications SOAP 1.2. Celle-ci fournit des informations détaillées de l’erreur. La première version de cette structure XML <Erreur> comporte les éléments nécessaires à l’analyse d’un problème. Une évolution de cette structure XML <Erreur2> ajoute en complément des éléments de contact AMC. L’espace de nommage de ces structures est urn:amc:ci. Structure XML <Erreur> <ci:Erreur xmlns:ci="urn:amc:ci"> <ci:MessageId> ... </ci:MessageId> [1] <ci:Horodatage> ... </ci:Horodatage> [1] <ci:Adressage> ... </ci:Adressage> [0..1] <ci:Message> ... </ci:Message> [0..1] </ci:Erreur> <MessageId> (obligatoire) C’est la valeur de l’identifiant d’origine. 10 <Message><Id> du message https://en.wikipedia.org/wiki/QName 13/12/2016 GIE SESAM-Vitale 34 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC <Horodatage> (obligatoire) C’est l’horodatage de l’erreur en heure local. <Adressage> (optionnel) C’est l’identifiant du régime sur lequel l’erreur s’est produite. Cet identifiant est identique à la balise XML <Message><Adressage> du message d’origine. <Message> (optionnel) Texte d’aide pour l’éditeur précisant les raisons de l’erreur. Ce message n’est pas affiché au PS. Structure XML <Erreur2> <ci:Erreur2 xmlns:ci="urn:amc:ci"> <ci:MessageId> ... </ci:MessageId> [1] <ci:Horodatage> ... </ci:Horodatage> [1] <ci:Adressage> ... </ci:Adressage> [0..1] <ci:Message> ... </ci:Message> [0..1] <ci:ContactAmc> [0..1] <ci:Nom> ... </ci:Nom> [1] <ci:Email> ... </ci:Email> [0..1] <ci:Telephone> ... </ci:Telephone> [0..1] </ ci:ContactAmc> </ci:Erreur2> Les premières balises XML sont les mêmes que celles de la structure XML <Erreur>. <ContactAmc> (optionnel) Cette balise XML contient les trois éléments de contact décrit ci-dessous. <Nom> (obligatoire) C’est le nom du contact AMC. <Email> (optionnel) C’est l’email du contact. <Telephone> (optionnel) C’est le numéro de téléphone du contact. 13/12/2016 GIE SESAM-Vitale 35 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Chapitre 5 Le document métier 5.1 Structure Les enjeux fonctionnels fixent la définition du document métier. Le cadre d’interopérabilité fixe des attributs communs. <DocumentMetier xmlns="urn:amc:med" version="..." Id="..." horodatage="..."> ... </DocumentMetier> avec xmlns Espace de nommage identifiant la norme utilisée. version Cet attribut XML porte la version de la norme complète du schéma du document XML Id Cet attribut XML porte l’identifiant unique du document XML de type xs:ID. Cet identifiant est un UUDI préfixé par « _ ». Par exemple : _3f7b3dcf-1674-4ecd-92c8-1544f346baf8 horodatage Date et heure de création du document en heure local. Par exemple : 2016-12-17T09:30:47+02:00 13/12/2016 GIE SESAM-Vitale 36 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC 5.2 La signature des documents métier Si nécessaire, un document métier peut être signé par son émetteur. Dans ce cas, des certificats X.509 issus d’une autorité de certification du GIE SESAM-Vitale sont utilisés. À l’image de ce qui est demandé pour la sécurité d’accès, le SI-PS doit savoir gérer au moins deux certificats d’autorités du certificat de signature : une autorité en fin de vie et la nouvelle. Le besoin de signature est spécifié pour chaque service. La signature est compatible XaDes. Elle porte sur deux éléments : − le document métier ; − le certificat X.509 permettant de vérifier la signature. Les algorithmes sélectionnés sont les suivants : − l’algorithme de signature RSA basé sur l’algorithme de hachage (digest) SHA-256 sur les informations signées ; − l’algorithme de hachage (digest) SHA-256 ; − l’algorithme de canonisation « Exclusive XML canonicalization ». Cet algorithme est appliqué avant le hachage du XML (digest). Utiliser la canonisation permet aux applications d’utiliser le traitement XML et de parser les données XML sans « casser » la signature. 13/12/2016 GIE SESAM-Vitale 37 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC La signature XMLDsig est composée comme suit : <ds:Signature xmlns:ds=" http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="..."/> [1] <ds:SignatureMethod Algorithm="..."/> [1] <!-- Reference portant sur de document metier --> <ds:Reference URI="..."> [1] <ds:Transforms>[1] <ds:Transform Algorithm="..."/>[1] <ds:Transform Algorithm="..."/>[1] </ds:Transforms> <ds:DigestMethod Algorithm="..."/>[1] <ds:DigestValue> ... </ds:DigestValue>[1] </ds:Reference> <!-- Reference portant sur le KeyInfo --> <ds:Reference URI="..."> [1] <ds:Transforms>[1] <ds:Transform Algorithm="..."/>[1] </ds:Transforms> <ds:DigestMethod Algorithm="..."/>[1] <ds:DigestValue> ... </ds:DigestValue>[1] </ds:Reference> </SignedInfo> <ds:SignatureValue> ... </ds:SignatureValue> [1] <ds:KeyInfo Id="..."> [1] <ds:X509Data> [1] <ds:X509Certificate> ... </ds:X509Certificate> [1] </ds:X509Data> </ds:KeyInfo> </ds:Signature> Les éléments suivants de la signature doivent être renseignés : CanonicalizationMethod@Algorithm (obligatoire) Cet attribut XML définit l’algorithme de canonisation des deux balises XML <Reference> : Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#". SignatureMethod@Algorithm (obligatoire) Cet attribut XML définit l’algorithme de signature des deux balises XML <Reference> : Algorithm=""http://www.w3.org/2001/04/xmldsig-more#rsa-sha256". <SignatureValue> (obligatoire) Cette balise XML contient la valeur de la signature. 13/12/2016 GIE SESAM-Vitale 38 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC KeyInfo@Id (obligatoire) La balise XML <KeyInfo> contient le certificat X.509 avec la clef publique de vérification. C’est également un des éléments signés. Elle doit avoir un attribut Id de type xs:ID. Cet attribut doit contenir une valeur unique dans le flux XML. <X509Certificate> (obligatoire) Cette balise XML contient le certificat X.509 de signature. La balise XML <SignedInfo> intègre deux objets <Reference> désignant les deux parties à signer (Le document métier, le certificat). Concernant la référence au document métier : Reference@URI (obligatoire) Cet attribut XML porte URI de l’identifiant (ID) du document métier à signé (de la forme "#"+ID). Transform@Algorithm (obligatoire) On utilise une signature enveloppée ; le bloc de signature est inclus dans le document métier : Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature". Transform@Algorithm (obligatoire) On utilise un algorithme de canonisation C14N : Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#". DigestMethod@Algorithm (obligatoire) On utilise une méthode de prétraitement SHA-256 pour créer le digest du document métier. Algorithm="http://www.w3.org/2001/04/xmlenc#sha256". <DigestValue> (obligatoire) Cette balise XML contient la valeur du digest du document métier. 13/12/2016 GIE SESAM-Vitale 39 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale Cadre d’interopérabilité technique des services AMC Concernant la référence à <KeyInfo> : Reference@URI (obligatoire) Cet attribut XML porte URI de l’identifiant (ID) de <KeyInfo> à signer (de la forme "#"+ID). Transform@Algorithm (obligatoire) On utilise un algorithme de canonisation C14N : Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#". DigestMethod@Algorithm (obligatoire) On utilise une méthode de prétraitement SHA-256 digest de la balise XML <keyInfo>. pour calculer le Algorithm="http://www.w3.org/2001/04/xmlenc#sha256". <DigestValue> (obligatoire) Cette balise XML contient la valeur du digest de la balise XML <keyInfo>. 13/12/2016 GIE SESAM-Vitale 40 / 40 Ce document à diffusion restreinte ne peut être diffusé sans l'autorisation d'une personne habilitée au GIE SESAM-Vitale