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