Solution 2

Proxy en tant qu’Identity Broker

@startuml
!include https://bitbucket.org/devbox-sante/plantuml/raw/current/themes/theme-devbox-sante.puml

rectangle "Application cliente" as AppCli {
rectangle "Front Application"  as Front #E3F2FD
rectangle "Backend Application" as Backend #E1F5FE
}
rectangle "Authentification" as Authentification {

rectangle "Proxy eSanté DevBox\n(IdP)" as Proxy {
    rectangle "2a - Vérification login_hint / ID national" as Step1
    rectangle "2b - Si ID National absent, écran de saisie idNat" as Step2
    rectangle "2c - Affichage code App e-CPS" as Step3
}
' rectangle "Proxy eSanté DevBox Santé\n(Identity Provider)" as Proxy #FFF3E0
rectangle "Keycloak\n(OIDC Server)" as Keycloak #E8F5E9
rectangle "Pro Santé Connect\n(PSC)" as PSC #F3E5F5
}


' --- Liaisons principales ---
Front -down[#blue]-> Step1 : 1- Authentification CIBA
Step1 -[#blue]-> Step2
Step2 -[#blue]-> Step3
Step3 -[#blue]-> PSC : 2 - Authentification PSC
PSC -[#blue,dashed]-> Proxy : 3 - Renvoie PSC Token
Proxy -r[#green]-> "Keycloak" : 4 - Token Exchange\nPSC -> Keycloak
Keycloak -l[#green,dashed]-> Proxy : 5 - Renvoie Token Keycloak
Proxy -up[#green,dashed]-> Front : 6 - Renvoie Token Keycloak


@enduml

Configuration du proxy

Le proxy est packagé avec docker. image: repo.dev.coop/eproxy/eproxy-idp-poc:latest

Un certain nombre de paramètres sont configurables.

Paramètres obligatoires:

  • KEYCLOAK_URI : url du serveur keycloak
  • SERVER_PORT
  • MONGO_DB_URI (une version ultérieure permettra de tout configurer et logger en file system)
  • SPRING_PROFILES_ACTIVE: BROKER (possibilité de rajouter SWAGGER)

Exemple

docker run -d --name -p 443:8443 \ 
-e 'SPRING_PROFILES_ACTIVE=IDP' \
-e 'OAUTH2_SERVER_ISSUER=https://eproxy-test.devbox-sante.fr/' \ 
-e 'SERVER_PORT=8443' \ 
-e 'MONGO_DB_URI=mongodb://mongodb:27017/eProxy' \
eproxy repo.dev.coop/eproxy/eproxy-idp-poc:latest         

POC

Le proxy actuel n’est qu’un POC et ne dispose pas encore de l’ensemble des fonctionnalités prévues.

Dans l’architecture finale, le proxy ne devra pas être accessible qu’en interne. Les tokens de PSC ne devront jamais être transmis à un front.

Configuration EDC

La configuration des clients et des routes vers les API de l’espace de confiance seront disponibles via une interface d’administration