Table of Contents

Application Machine à machine sur la plateforme d’identité Mozaïk

Les applications qui contiennent des processus de longue durée ou qui fonctionnent sans interaction d’un utilisateur doivent disposer d’un moyen d’accès aux ressources protégées, comme les API Web. Ces applications sont couramment utilisées pour les interactions de serveur à serveur qui doivent s’exécuter en arrière-plan sans l’interaction immédiate d’un utilisateur. Ces applications peuvent s’authentifier et récupérer des jetons d’accès à l’aide de l’identité d’application plutôt qu’avec l’identité déléguée d’un utilisateur avec le flux OAuth 2.0 - Client Credentials Grant.

Obtention d’un jeton d’accès

Une fois que vous avez acquis le consentement de l’organisation pour votre application, vous pouvez passer à l’acquisition des jetons d’accès pour une ressource sécurisée, par exemple une API Web. Pour obtenir un jeton à l’aide du flux OAuth 2.0 - Client Credentials Grant, envoyez une requête POST au point de terminaison de la plateforme d’identité Mozaïk /token :

Les sauts de ligne sont pour la lisibilité seulement.

POST /{tenant_id}/connect/token HTTP/1.1
Host: mozaikacces.ca
Content-Type: application/x-www-form-urlencoded

client_id=4de54d7b-cc83-4ad1-ac97-3a0c94288a10
&client_secret=uJ6oF1bL3qP8oE1qO1xN0lS8xV2rK7hQ8uJ3mN6wD4oJ4nD2nY
&grant_type=client_credentials
&scope=identity.read
Paramètre Condition Description
tenant_id Facultatif L’identifiant de l’organisation ayant accordé à votre application les autorisations demandées. L’identifiant de l’organisation propriétaire de l’application est utilisé par défaut. Si l’application utilisée n’appartient pas à un CSS, alors il doit être passé sur l’url, sous peine de recevoir une erreur tenant_required. À noter que si vous obtenez un jeton en passant un tenant id sur la route, vous devrez procéder ainsi pour les autres types de requêtes ({tenant_id}/connect/revocation).
client_id Obligatoire L’identifiant client attribué à votre application par l’environnement Espace API.
client_secret Obligatoire La clé secrète client que vous avez générée pour votre application dans l’environnement Espace API.
grant_type Obligatoire La valeur doit être client_credentials.
scope Facultatif L’ensemble des autorisations demandées par l’application séparées par des espaces. La valeur doit correspondre à des portées que vous avez inscrites dans l’environnement Espace API. Les noms des portées sont sensibles à la casse. Toutes les portées configurées sont utilisées par défaut.

Réponse réussie

Une réponse réussie ressemble à ceci :

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
   "access_token": "NzUzODkyYzAtNGExOC00NGI0LWE5MzAtMjkyYWU3MzlkM2I5",
   "expires_in": 3599,
   "token_type": "Bearer",
   "scope": "identity.read"
}
Paramètre Description
access_token Le jetons d’accès demandé. L’application peut utiliser ce jeton pour procéder à l’authentification sur la ressource sécurisée, par exemple une API Web. Le jeton d’accès ne doit pas être décodé ou inspecté, il doit être traité comme une valeur opaque.
expires_in La durée de validité du jeton d’accès (en secondes).
token_type Le type de jeton d’accès. Le seul type pris en charge par la plateforme d’identité Mozaïk est Bearer.
scope L’ensemble des autorisations accordées à votre application séparées par des espaces.

Réponse d’erreur

Une réponse d’erreur ressemble à ceci :

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
   "error": "invalid_scope",
   "error_description": "consent required"
}
Paramètre Description
error Un code d’erreur que vous pouvez utiliser pour classer les types d’erreurs se produisant et intervenir face aux erreurs.
error_description Un message d’erreur spécifique qui peut vous aider à identifier la cause principale d’une erreur d’authentification.

Utilisation d’un jeton d’accès

Maintenant que vous avez acquis un jeton d’accès, utilisez-le pour effectuer des demandes auprès de la ressource. Une requête ressemble à ceci :

GET /identity/me HTTP/1.1
Host: https://gateway.api.grics.ca
Authorization: Bearer NzUzODkyYzAtNGExOC00NGI0LWE5MzAtMjkyYWU3MzlkM2I5

Actualisation des jetons

Lorsque le jeton expire, répétez la demande auprès du point de terminaison /token tel que décrit à la section Obtention d’un jeton d’accès.