Configuration DevBox-santé INSi
Configuration application.yml
Pour configurer la DevBox-Santé INSi, il suffit de modifier les paramètres du fichier application.yml
:
devbox-sante:
insi:
url: https://qualiflps.services-ps.ameli.fr/lps
lpsInfo:
nom: À_CHANGER
numeroAutorisation: À_CHANGER
version: À_CHANGER
#Cet élément XML contient l’identifiant d’installation du logiciel. Cet identifiant est généré lors de l’installation du SI-PS. 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. Il permet également de compter le nombre de logiciels distincts accédant au TLSi.
instance: À_CHANGER (UUID)
context.strictCheckIdentifiantFacturation: true # true par défaut mais peut être mis à false car "Il est recommandé de rendre cette donnée paramétrable dans le LPS."
Pour charger le fichier de configuration :
java -Dspring.config.location=./application.yml -jar insi-proxy.jar
Mode de sécurité
Il existe quatre modes d’authentification pour accéder au téléservice INSi dans le composant DevBox-Santé :
- CPS : génération des signatures des messages SOAP en utilisant la cryptolib CPS au travers du composant DevBox-Santé CPS.
- CPS Stellair : mode d’authentification spécifique offre Stellair
- P12 : initialisation des connexion TLS avec le Téléservice INSi avec un certificat d’établissement p12
- P12Multiple : permet la connexion TLS avec plusieurs certificats d’établissements p12
- P12InHeader : permet lo connexion TLS avec le certificat P12 passé dans le header HTTP.
Attention
les urls des téléservices sont différents en fonction du mode d’authentificationCPS
- Mode de sécurité
CPS
, dans le fichier de configurationapplication.yml
:
devbox-sante:
insi:
security.mode: cps
# url: https://qualiflps.services-ps.ameli.fr/lps
url: https://services-ps.ameli.fr/lps
Utiliser ce mode de sécurité pour l’utilisation du composant avec l’authentification par carte CPS.
P12
Ce mode de sécurité P12
, permet le chargement d’un fichier p12 défini le fichier de configuration application.yml
:
devbox-sante:
insi:
security.mode: p12
# url: https://qualiflps-services-ps-tlsm.ameli.fr/lps
url: https://services-ps-tlsm.ameli.fr/lps
tls.p12:
path:
À_CHANGER_NOM_FICHIER.p12
password:
À_CHANGER_MOT_DE_PASSE_FICHIER.p12
Utiliser ce mode de sécurité pour l’utilisation du composant avec l’authentification par certificat serveur.
Remarque
Il existe deux types de certificat lesINSI-AUTO
et les INSI-MANU
. Il s’agit d’une règle de nommage défini dans les spécifications. Il est demandé par le CNDA d’utiliser des certificats INSI-MANU
pour tout accès au téléservice INSi par des acteurs humains, et INSI-AUTO
pour des accès par des acteurs de traitements automatiques, types batchs.
P12 Multiple
Ce mode de sécurité p12s
permet de gérer en une seule installation l’ensemble des connexions des différents établissements géographiques/juridiques.
Un AmoP12Provider
par défaut va charger un ensemble de fichier P12 à partir de la configuration, comme par exemple :
devbox-sante:
insi:
security.mode: p12s
# url: https://qualiflps-services-ps-tlsm.ameli.fr/lpss
url: https://services-ps-tlsm.ameli.fr/lps
tls:
p12:
-
name: FINESS_ETAB_1-manu
path: FINESS_ETAB_1_CERTIFICAT_MANU.p12
password: À_CHANGER_MOT_DE_PASSE_FICHIER
-
name: FINESS_ETAB_1-auto
path: FINESS_ETAB_1E_CERTIFICAT_AUTO.p12
password: À_CHANGER_MOT_DE_PASSE_FICHIER
-
name: FINESS_ETAB_2-manu
path: FINESS_ETAB_2_CERTIFICAT_AUTO.p12
password: À_CHANGER_MOT_DE_PASSE_FICHIER
Il est toutefois possible de définir un autre AmoP12Provider
, il suffit de configurer un nouvau Bean Spring avec une autre implémentation. Comme par exemple, une implémentation qui va charger le certificat en base de données :
@Component
public class FromDatabaseP12Provider implements AmoP12Provider {
public AmoP12 getP12(String name) {
// chargement en base de donnée des informations du certificat ayant pour nom name.
}
}
Pour charger dynamiquement un certificat il suffit de rajouter le nom du certificat (amoP12.name
) dans le header de la requête HTTP :
curl -X GET "http://localhost:8584/insi/rechercheSansVitale" -H "accept: application/json" -H "amoP12.name: ÀPréciser"
P12 in header
Ce mode de sécurité, p12InHeader
permet d’envoyer dans le header le certificat p12 et le password à la devbox-santé INSI. Ainsi l’appelant maîtrise la gestion de ces certificats.
Attention : Il est conseillé de mettre en place ce mode de sécurité seulement dans un environnement sécurisé
Pour le configurer :
devbox-sante:
insi:
security.mode: p12InHeader
Il faut donc rajouter deux header dans chaque requête HTTP :
amoP12.p12
contenant le p12 encodé en base 64amoP12.password
contenant le mot de passe du certificat p12
Jeu de test CNDA
Afin de pouvoir exécuter les tests d’injection demandées par le CNDA, il faut lancer le proxy avec l’un des profils spring activés suivant :
CNDA_WEB
: rajoute un nouvel endpoint CNDA permettant l’injection des fichiers de test XML du CNDA.CNDA
: rajoute un menu dans leTrayIcon
du système d’exploitation permettant l’injection des fichiers de test XML du CNDA.
Exemple :
java -Dspring.profiles.active=CNDA_WEB -jar insi-proxy.jar
Vous pouvez également injecter la resource de votre choix à partir du moment où elle correspond au format de la réponse SOAP souhaitée :
Exemple de fichier soap.xml demandé : Reponse_numcasINSI_11_DateNaissance00_Annee.xml
Configuration de la sécurité
Le proxy insi est une application web Spring Boot, toutes les possibilités de spring-security sont donc disponibles.
Exemple de configuration par défaut empêchant toutes les IPs externes :
devbox-sante:
security.forceLocalAddress: true
Surcharge les LpsInfo dans le proxy
La configuration du proxy contient les informations par défaut de configuration du LPS (Logiciel de Professionnel de Santé) 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 |
---|---|
numero d’autorisation | insi.lpsInfo.numeroAutorisation |
nom du lps | insi.lpsInfo.nom |
version du LPS | insi.lpsInfo.version |
Par exemple :
curl -X GET "http://localhost:8485/insi/rechercheAvecVitale" -H "accept: application/json" -H "insi.lpsInfo.numeroAutorisation: ÀPréciser"
Ainsi le client peut dynamiquement passer les informations du LPS.