Installation
La DevBox-Sante eProxy a besoin d’accéder à un service de base de données MongoDB et selon les besoins à Redis.
Pour une installation de la Devbox-santé, il faut mettre en place 4 services :
- mongodb : persistance des données (traces)
- redis (optionel): gestions des sessions pour une scalabilité horizontale
- eproxy : serveur du Proxu eSanté
- back-office : outil d’administration et de visualisation des traces
Tout cela Au sein d’un meme réseau : eproxy-network protégé.
!theme aws-orange
actor "BO_administrateur" as bo_admin
component "LGC" as lgc
card "Docker eproxy-network" {
component "eproxy-back-office" as bo
database mongodb as db
component "eproxy-server" as eProxy
component "redis" as redis
}
lgc -r-> eProxy : https
eProxy -d-> db
bo -l-> db
eProxy -> redis : session (option)
bo_admin -u-> bo : https
Pour cela nous allons utiliser docker compose
Docker Compose
Un bon point de départ est ce fichier docker-compose.yml que vous pourrez par la suite personaliser dans le chapitre “Configuration” :
name: devboxsante-eproxy
networks:
eproxy-network:
name: eproxy-network
x-common-env: &common-env
MONGO_DB_URI: mongodb://mongodb:27017/eProxy
DEVBOX_EPROXY_KEYSTORE_PASSWORD: changeIt
REDIS_HOST: redis
x-logging: &default-logging
driver: "json-file"
options:
max-size: "20m"
max-file: "10"
services:
# =========================
# Redis
# =========================
redis:
image: redis:8
container_name: eproxy-redis
restart: on-failure:5
networks:
- eproxy-network
logging: *default-logging
# =========================
# MongoDB
# =========================
mongodb:
image: mongo:8
container_name: eproxy-mongodb
restart: on-failure:5
networks:
- eproxy-network
volumes:
- ${DEVBOX_VOLUME_ROOT}/dbx/eproxy/mongo/data:/data/db:rw
logging: *default-logging
# =========================
# eproxy-backoffice
# =========================
eproxy-bo:
image: devboxsante/devboxsante-eproxy-backoffice:${DBX_VERSION:-latest}
container_name: eproxy-bo
depends_on:
- mongodb
- redis
ports:
- "8282:8282"
environment:
<<: *common-env
DEVBOX_EPROXY_BO_ADMIN_PASSWORD: ${DEVBOX_EPROXY_BO_ADMIN_PASSWORD:-admin}
SERVER_PORT: 8282
SPRING_PROFILES_ACTIVE: SWAGGER,redis
DEVBOX_EPROXY_BO_OTP_REQUIRED: true
logging: *default-logging
restart: on-failure:5
volumes:
- ${DEVBOX_VOLUME_ROOT:-}/dbx/eproxy/back-office/config:/config:rw
- ${DEVBOX_VOLUME_ROOT:-}/dbx/eproxy/shared:/shared:rw
- ${DEVBOX_VOLUME_ROOT:-}/dbx/eproxy/back-office/logs:/logs:rw
networks:
- eproxy-network
# =========================
# eproxy
# =========================
eproxy:
image: devboxsante/devboxsante-eproxy:${DBX_VERSION:-latest}
container_name: eproxy
depends_on:
- mongodb
- redis
ports:
- "8181:8181"
environment:
<<: *common-env
DEVBOX_LM_ENV: ${DEVBOX_LM_ENV:-dev}
DEVBOX_LM_CLIENT: ${DEVBOX_LM_CLIENT}
DEVBOX_LM_TOKEN: ${DEVBOX_LM_TOKEN}
DEVBOX_JWT_SECRET: changeIt________________________________________________________
SPRING_PROFILES_ACTIVE: lm,psc-bas,edc-bas,redis,SWAGGER
SERVER_PORT: 8181
logging: *default-logging
restart: on-failure:5
volumes:
- ${DEVBOX_VOLUME_ROOT:-}/dbx/eproxy/server/config:/config:rw
- ${DEVBOX_VOLUME_ROOT:-}/dbx/eproxy/shared:/shared:rw
- ${DEVBOX_VOLUME_ROOT:-}/dbx/eproxy/server/logs:/logs:rw
networks:
- eproxy-network
Lancement du eProxy
Une fois le fichier créé, connectez-vous sur le docker hub de DEVCOOP avec les informations que nous vous avons fournies :
docker login -u ${DOCKER_HUB_ID} -p ${DOCKER_HUB_PASSWORD}
Renseigner les variables d’environnement nécessaires (à minima si vous n’avez pas mis la valeur directement dans le docker compose) :
export DEVBOX_LM_CLIENT=xxxx
export DEVBOX_LM_TOKEN=xxx
export DEVBOX_VOLUME_ROOT=C: #uniquement pour windows (c:\xxx) et mac (/Users/xxx)
Lancer le docker compose:
docker compose pull
docker compose up -d
Par défaut, aucun certificat n’est disponible pour se connecter via PSC, vous devez alors vous connecter sur le Back-Office (port 8282 par défaut) avec admin/admin (par défaut si vous ne l’avez pas changé dans le docker compose). Et ensuite ajouter au moins un certificat voir Back-Office
Authentification
Le 1er test que vous pouvez faire est de vous authentifier sur PSC:
curl --request POST \
--url http://localhost:8181/oauth2/ciba \
--header 'content-type: application/json' \
--data '{
"bindingMessage": "99",
"channel": "MOBILE",
"clientId": "xxxx",
"nationalId": "xxxx"
}'
- Le clientId doit correspondre au celui du certificat renseigné dans le Back-Office
- Le nationalId est celui de votre carte CPS.
Le service vous retournera les tokens de connexion à passer ensuite à chaque appel:
{
"access_token": "xxx",
"refresh_token": "xxx",
"expires_at": "2026-04-14T09:17:32Z",
"refresh_expires_at": "2026-04-14T09:31:32.993726702Z",
"id_token": "xxx",
"token_type": "Bearer",
"scope": [
"openid",
"scope_all"
],
"session_state": "xxx",
"proxy_session_id": "xx"
}
Appel de services de Espace de Confiance (EDC)
Sans les composants INSi ou DMP de la DevBox-Santé
Vous pouvez appeler directement les services avec votre message SOAP en passant dans les headers le access_token. Les urls sont
- INSi : /send/insi
- DMP: /send/dmp/{endPoint}
Exemple INSi:
curl --request POST \
--url "http://localhost:8181/send/insi" \
--header "authorization: Bearer {access_token}" \
--header "content-type: application/soap+xml; action=\"urn:ServiceIdentiteCertifiee:1.0.0:rechercherInsAvecTraitsIdentite\"" \
--data-binary "@rechercherInsAvecCarteVitale.xml"
Avec les composants INSi ou DMP de la DevBox-Santé
Pour voir comment configurer les composants DMP et INSi avec le eProxy voir Docker
curl --request POST \
--url {url_devbox_sante}/insi/v2/rechercheSansVitale \
--header 'authorization: Basic {auth}' \
--header 'dbx-proxy-bearer: Bearer {access_token}' \
--header 'content-type: application/json' \
--data '{"context":{"structure":{"identifiantFacturation":"123456789","identifiantNational":"10B0224655"}},"nomNaissance":"NESSI","prenoms":["Ruth"],"sexe":"F","dateNaissance":"1977-07-14","prenom":"Ruth"}'
Pour aller plus loin vous pouvez récupérer la collection Bruno de test: https://bitbucket.org/devbox-sante/dbx-examples-bruno/src/master/dbx