Table of Contents

Notions de jeton

Jeton d'identification ou d'identité (id token)

Le jeton d'identification est spécifique au protocole d’authentification OpenID Connect (OIDC). Il est émis par le service d’authentification de la Plateforme d’Identité Mozaïk et contient des informations sur l’utilisateur.

Les informations contenues dans ce jeton permettent de confirmer à l’application cliente que l’utilisateur est bien celui qu’il prétend être.

Voici un exemple de requête de connexion pour obtenir un jeton d'identification.

Note: Une application avec les bons paramètres doit être créée dans Espace API.

GET https://mozaikacces.ca/connect/authorize?
client_id=7eff70rb-0c6a-4600-b605-04867f4e0edb
&redirect_uri=https://jwt.io
&response_type=code
&scope=openid profile email
&nonce=z6SyFta2T924w1VXrAM1qqZ6
&state=2L9pb4GH0Bn7AawSl1sl5Y8G

Lors du décodage et de la validation du jeton d'identification, les données nom, prénom et courriel ne sont pas affichées pour une raison de sécurité.

Pour décoder un jeton, vous pouvez utiliser le site https://jwt.io ou toute autre application qui permet de décoder un jeton.

Lors du décodage du jeton, les revendications (claims) de celui-ci s'afficheront.

Par exemple:

Revendications Explications
exp: 1658325895 Date/heure d'expiration du jeton - représenté en nombre de secondes depuis 1970-01-01 00:00:00 UTC. N'a pas de lien avec la durée de session de l'utilisateur
iss: https://mozaikacces.ca Serveur d'authentification qui a émis le jeton
aud: 7eff70rb-0c6a-4600-b605-04817a4e0ebf Identifiant client (client id) de l'application
iat: 1658325595 Date/heure à laquelle le jeton a été créé - représenté en nombre de secondes depuis 1970-01-0100:00:00 UTC
at_hash: UUnBOBC8tiVfNGd8-CbFUw Valeur hachée retournée par le point de terminaison /authorize. Sert à valider l'authenticité du jeton d'accès
s_hash: TMWpW323s9gGALKSuStrkg Valeur hachée qui permet de valider le state
sid: q6Y80HXLBsHZ8nPbN6858g Identifiant de la session au service d'authentification
sub: a1dbeceb-7c19-4e53-bac8-ce7e0c6e474f Identifiant unique de l'utilisateur dans le service d'authentification
auth_time: 1658325594 Date/heure de l'authentification au service d'authentification - représenté en nombre de secondes depuis 1970-01-01 00:00:00 UTC
idp: Microsoft Fournisseur d'identité qui a authentifié l'utilisateur
tenant_id: 6517ac90-6f4d-46cf-878f-c5u6875291ffd Identifiant de l'abonnement de l'organisation scolaire dans Mozaïk-Portail
amr: external Méthode d'authentification utilisée par l'utilisateur

Pour accéder aux données nom, prénom, courriel de l'utilisateur authentifié, il faut utiliser le point de terminaison https://mozaikacces.ca/connect/userinfo.

L'appel de la route /connect/userinfo en utilisant les portées openid, email et profile affiche un résultat similaire à celui-ci.

{
    "sub": "a1dbeceb-7c19-4e53-bac8-ce7e0c6e474f",
    "preferred_username": "testutilisateur@servicesgrics.ca",
    "email": "testutilisateur@servicesgrics.ca",
    "email_verified": true,
    "family_name": "Fournier",
    "given_name": "Jasmine",
    "name": "Jasmine Fournier"
}

Dans Espace API, le jeton d'identification peut être utilisé avec des applications possédant un flux de sécurité « accessCode », c'est à dire qui exige l'authentification d'un utilisateur:

Jeton d'authentification

Jeton d'accès (Access token)

Le jeton d'accès permet à l’utilisateur d’appeler de manière sécurisée les API d’Espace API. Il permet de faire l’authentification et l’autorisation.

Pour un flux de sécurité « accessCode », le jeton d'accès est obtenu par la requête:

POST https://mozaikacces.ca/connect/token?
client_id=7eff70rb-0c6a-4602-b605-04817a4e0ebf
&redirect_uri=https://jwt.io
&scope=openid email profile apiclients
&grant_type=authorization_code
&code=372d283f708636f21cefa450d053279748e2ab638ad3b7565534
&code_verifier=X2qZ51vjL_b7RaVeTo8xD6ylEbGQDes6Bgp0zTsXSXg

Pour plus d'information sur les paramètres de ce flux de sécurité, vous pouvez consulter cette documentation: https://docs.mozaikacces.ca/app-native.html

Le contenu d'un jeton d'accès pour le flux de sécurité « accessCode » ressemble à ceci:

Revendications Explications
exp: 1658333878 Date/heure d'expiration du jeton - représenté en nombre de secondes depuis 1970-01-01 00:00:00 UTC. N'a pas de lien avec la durée de session de l'utilisateur
iss: https://mozaikacces.ca Serveur d'authentification qui a émis le jeton
client_id: 7eff70fb-0c6a-4600-b604-04817a4e0ecf L'identifiant de l'application dans Espace API
sub: a1dbeceb-7c19-4e53-bac8-ce7e0c6e474f Identifiant unique de l'utilisateur dans le service d'authentification
auth_time: 1658330277 Date/heure de l'authentification au service d'authentification - représenté en nombre de secondes depuis 1970-01-01 00:00:00 UTC
idp: Microsoft Fournisseur d'identité qui a authentifié l'utilisateur
tenant_id: 6517ac90-6f4d-46cf-878f-c4a670597fcb Identifiant de l'abonnement de l'organisation scolaire dans Mozaïk-Portail
scope: [openid,email,profile, apiclients] Portées utilisées
amr: [external] Méthode d'authentification utilisée par l'utilisateur

Pour un flux de sécurité « application », le jeton d'accès est obtenu par la requête:

POST https://mozaikacces.ca/connect/token?
client_id=7eff70rb-0c6a-4600-b605-04817a4e0ert
&client_secret=gert54646tyRhgtewfsdgfwer54PWlik
&grant_type=client_credentials
&scope=apiclients

Pour plus d'information sur les paramètres de ce flux de sécurité, vous pouvez consulter cette documentation: https://docs.mozaikacces.ca/app-machine.html

Le contenu du jeton d'accès pour le flux de sécurité « application » ressemble à ceci:

Revendications Explications
nbf: 1657023070 Not before - Délai avant lequel le jeton ne doit pas être accepté pour traitement - représenté en nombre de secondes depuis 1970-01-01 00:00:00 UTC
exp: 1657026670 Date/heure d'expiration du jeton - représenté en nombre de secondes depuis 1970-01-01 00:00:00 UTC. N'a pas de lien avec la durée de session de l'utilisateur
iss: https://mozaikacces.ca Serveur d'authentification qui a émis le jeton
aud: apiclients Audience - Correspond à la ressource d'Espace API
client_id: 4a0be327-f960-4ce9-a07b-85a653f6c292 L'identifiant de l'application dans Espace API
tenant_id: 6517ac90-6f4d-46cf-878f-c4a670597fcb Identifiant de l'abonnement de l'organisation scolaire dans Mozaïk-Portail
scope: [apiclients] Portée utilisée

Le jeton d'accès est requis pour tous les types de sécurité.

Jeton d'authentification

Pour obtenir de l'information sur la durée de vie des jetons: https://docs.mozaikacces.ca/tokens-lifetime.html