Utilisation des jetons
La plateforme Hellocare utilise des JSON Web Token (JWT) pour l'échange sécurisé des jetons avec votre système. Il est principalement utilisé pour gérer l'authentification des utilisateurs.
Structure
Un jeton se compose de trois parties:
- Une en-tête, utilisée pour décrire le jeton. Il s'agit d'un objet JSON.
- Un corps qui représente les informations embarquées dans le jeton. Il s'agit également d'un objet JSON.
- Une signature numérique.
Définition des propriétés
Propriété | Description | Notes |
---|---|---|
iss | (Issuer) Claim | Clé d'API fournie par Hellocare |
sub | (Subject) Claim | Identifiant de l'utilisateur sur votre système |
aud | (Audience) Claim | Valeur fixe: https://id.hellocareplatform.com |
exp | (Expiration Time) Claim | Date d'expiration du token |
nbf | (Not Before) Claim | Date de début de validité du token |
iat | (Issued At) Claim | Date d'émission du token |
jti | (JWT ID) Claim | ID unique du token |
https://id.hellocareplatform.com/prop/type | Type d'utilisateur Hellocare | PATIENT ou DOCTOR |
Génération du jeton
Nous vous conseillons très fortement d'utiliser des librairies de génération du JWT pour votre language de programmation côté serveur : https://jwt.io.
Ces dernières disposent des méthodes et validateurs pour peupler le jeton et le signer.
Nous vous présentons tout de même la décomposition JSON de la structure des jetons qui devront être générés. En cas de doute sur la validité d'un jeton, n'hésitez pas à utiliser le validateur en ligne : https://jwt.io
Composition de l'en-tête (header)
L'algorithme utilisé pour la génération du jeton (alg
) est RS256, c'est cette valeur qui doit figurer dans
l'entête du jeton.
La proriété jti
est un identifiant unique de jeton généré par votre système (un uid
dans l'exemple ci-dessous).
Exemple de header
{
"typ": "JWT",
"alg": "RS256",
"jti": "867c825d-38c5-4549-88a8-ea9177d8b4f4"
}
Composition du corps (payload)
Toutes les propriétés sauf le nbf
sont obligatoires lors de la génération du token.
Hormis les validateurs inhérents à la gestion du token (expiration, vérification de l'audience et signature),
les deux valeurs clés sont :
- L'émetteur (
iss
) qui nous permet de valider que le jeton a été généré sur un système autorisé - Le sujet (
sub
) qui votre l'identifiant de l'utilisateur sur votre système. Il correspond à l'externalId
qui vous sera demandé lors des appels API de création de ressources.
Exemple de payload
{
"iss": "7f48109c104721981da7917581eb9f88e67-test",
"aud": "https://id.hellocareplatform.com",
"jti": "867c825d-38c5-4549-88a8-ea9177d8b4f4",
"iat": 1523523421,
"nbf": 1523523481,
"exp": 1555059421,
"https://id.hellocareplatform.com/prop/type": "PATIENT",
"sub": "12345678abcde"
}
Signature du token
Il vous suffit maintenant de signer le JWT en RS256 avec votre clé privée via la librairie choisie.
La signature du jeton est indispensable car elle permet de vérifier que le message n'a pas été altéré entre le moment
de son émission sur votre serveur et la réception celui d'Hellocare.
Références
- RFC : https://tools.ietf.org/html/rfc7519
- Validateur JWT : https://jwt.io