Installation

Documentation d’installation du eProxy

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