Par souci de simplicité, notre implémentation portera uniquement sur l’authentification et l’autorisation. Comme vous le verrez dans les exemples, l’entrée de feuille de temps sera codée en dur, et l’API ne la conservera pas. Elle renverra simplement une partie des informations.
Définir les points de terminaison de l’API
Qu’est-ce qu’un point de terminaison d’API ?
Un point de terminaison d’API est une URL unique qui représente un objet. Pour interagir avec cet objet, votre application doit utiliser son URL. Par exemple, si vous aviez une API capable de renvoyer soit des commandes, soit des clients, vous pourriez configurer deux points de terminaison :
/orders et /customers. Votre application interagirait avec ces points de terminaison au moyen de différentes méthodes HTTP ; par exemple, POST /orders pourrait créer une nouvelle commande, tandis que GET /orders pourrait récupérer les données d’une ou de plusieurs commandes.HTTP GET vers le point de terminaison /timesheets permettra à un utilisateur de récupérer ses feuilles de temps, et une requête HTTP POST vers le point de terminaison /timesheets permettra à un utilisateur d’ajouter une nouvelle feuille de temps.
Consultez l’implémentation dans Node.js
Sécuriser les points de terminaison
Missing or invalid token renvoyé à l’application appelante.
Les validations que l’API doit effectuer sont :
- Vérifier que le est bien formé
- Vérifier la signature
- Valider les revendications standard
JWT.io fournit une liste de bibliothèques pouvant effectuer l’essentiel du travail pour vous : analyser le JWT, vérifier la signature et les revendications.
Vérifier les autorisations de l’application
Déterminer l’identité de l’utilisateur
sub, qui identifie le principal visé par la revendication. Dans le cas du flux Implicit Grant, cette revendication contient l’identité de l’utilisateur, c’est-à-dire l’identifiant unique de l’utilisateur Auth0. Vous pouvez l’utiliser pour associer à un utilisateur précis toute information stockée dans des systèmes externes.
Vous pouvez aussi utiliser une revendication personnalisée pour ajouter un autre attribut de l’utilisateur, comme son adresse de courriel, au Jeton d’accès et vous en servir pour identifier l’utilisateur de façon unique.
Consultez l’implémentation dans Node.js
Implémenter l’application mobile
code_challenge et la méthode utilisée pour le générer :
La requête GET vers l’URL d’autorisation doit inclure les valeurs suivantes :
Voir l’implémentation sur Android.
Obtenez les identifiants
authorization_code de la réponse contre un jeton d’accès que vous pourrez utiliser pour appeler votre API. Effectuez une requête POST à l’URL du jeton en incluant les données suivantes :
La réponse renvoyée par l’URL du jeton contiendra :
- access_token : un Jeton d’accès pour l’API, défini par
audience. - refresh_token : un Jeton d’actualisation n’est présent que si vous avez inclus le scope
offline_accessET activé Allow Offline Access pour votre API dans l’Auth0 Dashboard. - id_token : un JWT contenant les renseignements de profil de l’utilisateur.
- token_type : une chaîne indiquant le type de jeton; il s’agit toujours d’un jeton Bearer.
- expires_in : le nombre de secondes avant l’expiration du Jeton d’accès.
Récupérer le profil de l’utilisateur
Afficher conditionnellement des éléments de l’interface utilisateur selon le scope
scope de l’utilisateur, vous pourriez vouloir afficher ou masquer certains éléments de l’interface utilisateur. Pour déterminer le scope accordé à un utilisateur, vous devez examiner le scope qui lui a été octroyé au moment de l’authentification. Il s’agit d’une chaîne contenant tous les scopes; vous devez donc vérifier si elle contient le scope requis afin de décider s’il faut afficher un élément particulier de l’interface utilisateur.
Voir l’implémentation sur Android
Appeler l’API
Authorization à l’aide du schéma Bearer.
Voir l’implémentation sur Android.
Renouveler le jeton
POST au point de terminaison /oauth/token en utilisant le obtenu dans votre résultat d’autorisation.
Un Jeton d’actualisation n’est présent que si vous avez inclus le scope offline_access dans la requête d’autorisation précédente et activé Allow Offline Access pour votre API dans l’Auth0 Dashboard.
Votre requête doit inclure :
La réponse inclura le nouveau Jeton d’accès :