Configuration
Comme toute application spring-boot, la DevBox-Santé DMP se configure au travers du fichier application.yml
. Suivant le paradigm Convention Over Configuration, la DevBox-santé DMP peut fonctionner avec un minimum de configuration. Nous pouvons tout de même configurer et changer certains points de configuration.
Logging
Comme la gestion des traces de l’application qui est différente en développement de la production.
logging.level:
fr.devboxsante: info
fr.devcoop: warn
org.springframework: error
org.apache.cxf.services: info # à mettre à debug pour tracer les messages soaps
Spécifique au DMP
Les configurations évolutives du DMP sont configurés par défaut, mais elles peuvent être surchargées :
devbox-sante:
dmp:
parameters:
# Url du document xml contenant le paramétrage du DMP [FI-URL]
url: https://www.dmp.fr/web/dmp/documents/param-lps
delayBetweenSyncInHours: 24
document:
checkHash: true
#serveur de temps
time.ntpServer: fr.pool.ntp.org
Spécifique à la validation CDA
devbox-sante:
dmp:
# path vers les resources de validation CDA.
# la resource peut être récupéré directement depuis le site de esante.gouv.fr ou depuis les resources fournies
cda.validator:
resourceName: testContenuCDA-3.0-20230901_DMP-356-370.zip # dans le classpath
# resourceName: https://installers.devbox-sante.fr/installer/resources/esante.gouv.fr/testContenuCDA-3.0-20230901_DMP-356-370.zip # sur le net
charset: ISO-8859-1
La génération des ressources de validation des CDA est dorénavant réalisé depuis des scripts de transformation des sources disponibles sur les sites github de l’ANS : https://github.com/ansforge/TestContenuCDA-3-0 Les équipes de la DevBox-Santé maintiennent à jour un livrable régulièrement sur https://installers.devbox-sante.fr/installer/resources/esante.gouv.fr/
Les Jeux de Valeurs du DMP
Deux modes de chargement disponible pour les nomenclatures (jeux de valeurs) du DMP. En effet, les jeux de valeurs mis à disposition par le GIE Sesam-vitale sont disponibles régulièrement sur le site industriels.sesam-vitale.fr . Parfois certaines valeurs ne sont pas encore disponible de cette manière. Cela impose un autre mode de récupération de ces jeux de valeurs, en allant directement sur le site de l’ANS dédié : https://mos.esante.gouv.fr/NOS. Parfois, c’est le contraire :( .
devbox-sante:
dmp:
nomenclature:
mode:
# nos : directement sur le site https://mos.esante.gouv.fr/NOS/
zip # zip : jeux de valeurs mis à disposition sur le site industriels du sesam-vitale
resourceName: JDV DMP_API_V2_XML.zip # path du fichier zip disponible sur le filesystem / classloader
# resourceName: https://installers.devbox-sante.fr/installer/resources/esante.gouv.fr/20231124-JDV_DMP_API_V2_XML.zip
#Encodage de caractère utilisé dans ces jeux de valeurs.
charset: UTF-8
Les urls du DMP
devbox-sante:
dmp:
url.prefix:
# environnement production
https://lps-igc-sante.dmp.gouv.fr/
url.web.prefix:
# environnement production
https://ledmp.dmp.gouv.fr
Remarque : pour plus d’informations sur les différents environnements /dmp/howtos/environnements
Les informations du LPS homologuée
debox-sante:
dmp:
lpsInfo:
homologationId: XXX-xxxxxx-xxx
version: x.0
nom: VOTRE_LOGICIEL
#Numéro de série ou identifiant de l'installation du logiciel
id: 1.2.250.1.287.1.1234567
source:
# 1.2.250.1.287 est l'OID de Devcoop
# 1.2.250.1.287.1 est l'OID correspondant à la DMPC pour Devcoop
idRoot: 1.2.250.1.287.1
# l'idExtension doit prendre pour valeur une valeur unique de l'instance installé EX_2.1-1130
idExtension: 1234567
En pratique il faut assurer une cohérence entre l’
idExtension
de la source et le dernier composant de l’id
dulpsInfo
. EX_GEN-1350 et EX_2.1-1130
Surcharge les LpsInfo dans le header HTTP
La configuration du proxy REST contient les informations par défaut de configuration du LPS cf. paragraphe précédent. Il est toutefois possible de surcharger ces valeurs (comme le numeroAutorisation qui peut être confidentiel) en les passant dans les header HTTP des requêtes.
Voici la liste des informations LPS pouvant etre surchargées :
Informations LPS | Clef dans le header |
---|---|
id de l’homologation | dmp.lpsInfo.homologationId |
nom du lps | dmp.lpsInfo.nom |
version du LPS | dmp.lpsInfo.version |
Par exemple :
curl -X GET "http://localhost:8485/insi/rechercheAvecVitale" -H "accept: application/json" -H "dmp.lpsInfo.homologationId: ÀPréciser"
Différents modes d’authentification
Les modes d’authentification supportés par la DevBox-Santé DMP sont les deux demandés dans le guide d’intégration du DMP. Il s’agit du mode d’authentification directe (avec l’usage de la carte CPS) et indirecte (avec l’usage des certificats serveurs). Ils peuvent être mis en œuvre de manière différente.
Authentification directe
Configuration de la DevBox-santé DMP en authentification directe pour un usage des cartes CPS/CPE pour les authentifications et signatures.
devbox-sante:
dmp:
# authentification directe utilisant les certificats de la carte CPS
security.mode: cps
Authentification directe : CPS Agent
Un mode d’authentification intégrant le module CPS agent se fait de la manière suivante :
devbox-sante:
dmp:
# authentification directe depuis le backend par l'intermédiaire d'un agent CPS sur le poste du client
security.mode: withCpsAgent
Authentification indirecte
Authentification indirecte par l’utilisation des certificats serveurs. Pour en savoir plus sur l’obtention des certificats, suivez cette documentation.
devbox-sante:
dmp:
# authentification indirecte utilisant les certificats p12 serveurs
security.mode: p12
# informations relatives au certificat smime
smime:
p12:
path:
asip-p12-EL-TEST-ORG-SIGN-xxxx.p12
password:
password
# informations relatives au certificat ssl
ssl:
p12:
path:
asip-p12-EL-TEST-ORG-AUTH_CLI-xxxx.p12
password:
password
Authentification indirecte : multi-certificats
Possibilité de supporter plusieurs certificats pour des établissements géographiques/juridiques différents :
devbox-sante:
dmp:
# authentification indirecte avec certificat nommé
security.mode: p12s
# informations relatives au certificat smime
smime:
p12:
-
name: devcoop-sign
path: asip-p12-EL-TEST-ORG-SIGN-20210427-103248.p12
password: password
-
name: devcoop-sign2
path: autre.p12
password: autrePassword
ssl:
p12:
-
name: devcoop-auth
path: asip-p12-EL-TEST-ORG-AUTH_CLI-20210427-102425.p12
password: password
-
name: devcoop-auth2
path: autre_auth.p12
password: autre_authPassword
Pour charger dynamiquement les certificats, ssl et smime il suffit de rajouter les noms des certificats (dmpAuthenticationP12.name
, dmpSignatureP12.name
) dans le header de la requête HTTP :
curl -X GET "http://hostname:port/dmp/td..." -H "accept: application/json" -H "dmpAuthenticationP12.name: ÀPréciser" -H "dmpAuthenticationP12.name: ÀPréciser"
Authentification indirecte : P12 in Header HTTP
Le mode p12InHeader
permet de faire passer les deux certificats p12 dans l’entête HTTP de la requête, cela permet à l’appelant de conserver et décider des certificats utilisés lors de l’appel du proxy.
Le header étant plus lourd il faudra veiller à ce que la configuration spring prenne en compte la taille du header d’au moins 40Kb.
La configuration application.yml
est :
server:
max-http-header-size: 50KB
devbox-sante:
dmp:
# authentification indirecte avec certificats dans le header HTTP
security.mode: p12InHeader
Et la requête doit contenir les informations dans le header.
curl --location --request POST 'http://localhost:8080/dmp/td21SubmitDocuments' \
--header 'Content-Type: application/json' \
--header 'dmpAuthentication.p12: MIIcdAIBAzCCHDo...AA==' \
--header 'dmpAuthentication.password: PASSWORD' \
--header 'dmpSignature.p12: MIIcoQIBAzCCH...IAA==' \
--header 'dmpSignature.password: PASSWORD' \
--data-raw '{
"context": {
},
"request": {
...
}
}'
Le certificat p12 doit être passé en base64.
Windows Powershell:
$cert = get-content 'certificate.p12' -Encoding Byte
$base64 = [System.Convert]::ToBase64String($cert)
echo $base64
Linux:
base64 -w 0 certificate.p12 > outputfile
Mac OS:
base64 -i certificate.p12 -o outputfile
Authentificatino directe Stellair
Une page de documentation spécifique se trouve ici : /dmp/howtos/demo-stellair