Modalités d'accès aux données
Authentification
Le mode d’authentification à mettre en œuvre dépend du profil d’accès aux données affecté à l’éditeur lors de l’intégration.
L’authentification pour les profils 0 (accès aux données publiques)
Les profils 0 d’accès aux données (accès uniquement aux données publiques) s’authentifient avec un client_id / client_secret avec le protocole OAuth2 (RFC 6749).
Ce sont les seuls à pouvoir s’authentifier avec un client_secret. Les autres profils doivent s’authentifier avec un certificat (voir ci-dessous).
L’URL de l’access_token endpoint est décrite sur la page Environnements et endpoints.
sequenceDiagram
participant C as Client FHIR (Éditeur)
participant A as Serveur d'autorisation (ROR National)
participant S as Service cible (ROR National)
C->>A: 1. client_id + client_secret
A-->>C: 2. access_token
C->>S: 3. access_token + 4 headers "Ror-…"
S->>A: 4. validation de l'access_token (introspection ou vérification locale)
A-->>S: ok
S-->>C: 5. accès aux données
L’authentification pour les autres profils (accès aux données restreintes et très restreintes)
Pour tous les autres profils d’accès aux données (de 1 à 4), l’authentification mise en place est OAuth2 avec mTLS (RFC 6749 + RFC 8705) :
- La liaison mTLS est établie entre le client FHIR et le serveur d’autorisation ;
- Le client FHIR accédant à la donnée sensible (accès aux données restreintes et/ou très restreintes) n’a pas de
client_secretmais un certificat qui remplace leclient_secret.
Flux 1 et 2 : obtention du token
Le client FHIR s’authentifie via une liaison mTLS auprès du serveur d’autorisation du ROR avec un client_id ; le certificat utilisé dans la liaison mTLS remplace le client_secret.
- Sur l’environnement « bac-à-sable », le certificat doit être un certificat issu d’IGC SANTE test.
- Sur la production, le certificat doit être un certificat issu d’IGC SANTE.
Flux 3 à 5 : consommation de l’API
Le client FHIR se connecte au service cible du ROR en HTTPS. Voir la page Consommation des API FHIR.
sequenceDiagram
participant C as Client FHIR (Éditeur)
participant A as Serveur d'autorisation (ROR National)
participant S as Service cible (ROR National)
rect rgb(235, 245, 255)
Note over C,A: Liaison mTLS
C->>A: 1. client_id + certificat
A-->>C: 2. access_token
end
C->>S: 3. access_token + 4 headers "Ror-…"
S->>A: 4. validation de l'access_token (introspection ou vérification locale)
A-->>S: ok
S-->>C: 5. accès aux données
Voir la page Exemple cURL complet pour des exemples complets, ainsi que les instructions de conversion d’un certificat .p12 pour ces deux environnements.