APIs
Par jeton d'identité

Authentification sécurisée sur l’API POSOS

Bon à savoir : cette documentation explique la récupération d’un jeton sécurisé permettant de se connecter aux API POSOS et ne concerne pas l’accès aux entrepôts FHIR

L’API POSOS est protégée par une couche d’authentification Google Cloud Identity-Aware Proxy, permettant d’assurer la sécurité de l’accès aux API et aux données. Cette interface utilise les protocoles OAuth 2 et OpenID Connect pour autoriser les accès, et valide l’identité de l’appelant grâce à une clé privée. Cette clé vous est transmise par POSOS sous forme d’un fichier .json et est strictement secrète. Elle doit pouvoir être changée rapidement en cas de révocation.

Sur le principe, l’appelant construit un jeton d’accès contenant sa demande, l’envoie à l’API Google Auth qui lui renvoie en retour un jeton d’identité. Cette preuve d’authentification sera ensuite jointe dans l’en-tête des requêtes subséquentes.

La documentation de référence se trouve à l’adresse suivante :

Programmatic authentication | Identity-Aware Proxy | Google Cloud (opens in a new tab)

L’appelant a besoin de deux éléments :

  • sa clé privée (fichier .json)
  • un identifiant de Client OAuth propre à l’environnement appelé. Cette chaine de caractère vous est transmise par POSOS en même temps que la clé. Elle est stable pour chaque environnement (preprod, production)
  • Valeur du Client ID par environnement :

Client ID

20286154155-852pf0ti456nd81ongbiecmjqgag84q3.apps.googleusercontent.com

La demande d’un jeton d’identité peut se faire avec n’importe quelle technologie capable de faire une requête HTTP, mais certains langages disposent de librairies officielles capable de réaliser l’opération automatiquement.

Exemples d’implémentations

Toutes les librairies proposées par Google simplifient la configuration si l’on définit la variable d’environnement GOOGLE_APPLICATION_CREDENTIALS pour la faire pointer sur le fichier .json de la clé privée.

Exemples

from google.auth.transport.requests import Request
from google.oauth2 import id_token
 
# La clé privée est dans le fichier désigné par la variable
# d'environnement GOOGLE_APPLICATION_CREDENTIALS
 
# Le client_id est l'identifiant de client OAuth et
# devrait être fourni par une variable d'environnement aussi
client_id = ".........."
 
token = id_token.fetch_id_token(Request(), client_id)
# token contient le jeton d'identité à joindre aux requêtes

Envoi des requêtes authentifiées

Le jeton d’identité doit être joint en en-tête des requêtes dans le header Authorization sous le format Bearer <contenu du jeton>.

curl --request GET --url 'https://api.preprod.posos.co/[...]' --header 'Authorization: Bearer <token>'