CPS Agent Livre de cuisine

Comment mettre en œuvre les différentes DevBox-santé pour une authentification DMP en mode CPS-Agent

1. Démarrer la Devbox-Santé DMP côté backend

Il s’agit d’une image docker avec la configuration suivante :

devbox-sante: 
  dmp: 
    security.mode: withCpsAgent

Pour lancer l’image docker :

docker run --name devbox-sante-cps-agent -p 8080:8080 -d devboxsante/CLIENT:VERSION

DevBox-Santé backend

Nous avons déployé pour l’instant cela :

!theme aws-orange
!define DEVBOX_COLOR #278ef5
!define DMP_COLOR #35D9C0
!define MSS_COLOR #DE5D80
!define INS_COLOR #07A2CF
!define CPS_COLOR #D34A3C
!define VITALE_COLOR #5FD67A
!define PSC_COLOR #ff7765
!define APCV_COLOR #c6e66d
!define ANNUAIRE_COLOR #7613e0
!define DATA_COLOR #ffa800

node "Environnement back" {
    package "DevBox-Santé Proxy REST" DEVBOX_COLOR {
        component "DevBox-sante DMP" as dmpFacade DMP_COLOR {
            [CpsAgentClient] CPS_COLOR
        }
    }
}

2. Démarrer la DevBox-Santé CPS agent côté client

Il s’agit d’insaller une DevBox-Sante client avec un installer configuré en tant que CPS-agent :

devbox-sante: 
    security:
        cpsAgent: true

La DevBox-Santé tourne dans notre exemple sur le port 10035 :

DevBox-Santé Client agent

Nous avons déployé maintenant:

!theme aws-orange
!define DEVBOX_COLOR #278ef5
!define DMP_COLOR #35D9C0
!define MSS_COLOR #DE5D80
!define INS_COLOR #07A2CF
!define CPS_COLOR #D34A3C
!define VITALE_COLOR #5FD67A
!define PSC_COLOR #ff7765
!define APCV_COLOR #c6e66d
!define ANNUAIRE_COLOR #7613e0
!define DATA_COLOR #ffa800

node "Poste Client (Windows/Mac/Linux)" {

    package "DevBox-Santé Proxy REST" as cpsAgent DEVBOX_COLOR {
            [DevBox-sante CPS] as cps CPS_COLOR

    }
    [Cryptolib CPS (ANS)] as cryptolibCPS
}

node "Environnement back" {
    package "DevBox-Santé Proxy REST" DEVBOX_COLOR {
        component "DevBox-sante DMP" as dmpFacade DMP_COLOR {
            [CpsAgentClient] CPS_COLOR
        }
    }
}

3. Obtenir le mot de passe de la DevBox-santé CPS agent sur le poste client.

Pour obtenir le mot de passe d’accès, il faut depuis un processus local au poste client faire l’appel à la route /cps/password

Get password

Ce mot de passe est dorénavant connu de l’application front, et peut être passé au backend.

4. Appeler la DevBox-Santé DMP avec les informations du CPS Agent

Le frontend fait passer au backend les informations du poste client CPS Agent suivantes :

  • L’IP du poste client, dans notre cas : 192.168.1.12
  • Le numéro de port du poste client, dans notre cas : 10035
  • Le mot de passe préalablement obtenu, dans notre cas : f2e3122c-b7f4-473f-b763-8ad5e050ae74

Le backend peut dont appeler une transaction du DMP avec les informations fournies :

post {
  url: {{base_url}}/dmp/td02Exist
  body: json
  auth: none
}

headers {
  Content-Type: application/json
  devboxsante.cps.agent.client.url: https://192.168.1.12:10035
  devboxsante.cps.agent.client.user: 
  devboxsante.cps.agent.client.password: f2e3122c-b7f4-473f-b763-8ad5e050ae74
}

body:json {
  {
      "context": {
      },
      "request": {
          "matriculeINS": {
              "valeur": "287080883795737",
              "identifiantSysteme": "1.2.250.1.213.1.4.10"
          }
      }
  }
}

Ce qui a pour résultat dans Bruno :

Bruno résultat

Au final nous avons mis en place l’architecture suivante :


!theme aws-orange
!define DEVBOX_COLOR #278ef5
!define DMP_COLOR #35D9C0
!define MSS_COLOR #DE5D80
!define INS_COLOR #07A2CF
!define CPS_COLOR #D34A3C
!define VITALE_COLOR #5FD67A
!define PSC_COLOR #ff7765
!define APCV_COLOR #c6e66d
!define ANNUAIRE_COLOR #7613e0
!define DATA_COLOR #ffa800


node "Poste Client (Windows/Mac/Linux)" {
    [FrontEnd intégrateur] as frontend

    package "DevBox-Santé Proxy REST" as cpsAgent DEVBOX_COLOR {
            [DevBox-sante CPS] as cps CPS_COLOR

    }
    [Cryptolib CPS (ANS)] as cryptolibCPS
}

node "Environnement intégrateur" {
   [BackEnd intégrateur] as backend
    package "DevBox-Santé Proxy REST" DEVBOX_COLOR {
        component "DevBox-sante DMP" as dmpFacade DMP_COLOR {
            [CpsAgentClient] CPS_COLOR
        }
    }
}
cloud "**DMP**" as DMP

frontend <--> cpsAgent : 1 GET /cps/password
frontend -d-> backend : 2 POST {ip, port , password}
backend -d-> dmpFacade  : 3 POST /dmp/td02Exist , headers {cps.agent.client.url, cps.agent.client.passaord}
CpsAgentClient <-> cpsAgent : 4 /cps/ opérations
cps <-down-> cryptolibCPS : 5 appels natifs
dmpFacade -down-> DMP : 6 POST SOAP / XDS