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.