Par souci de simplicité, nous limiterons notre mise en œuvre à l’authentification et à l’autorisation. Comme vous le verrez dans les exemples, l’entrée de feuille de temps fournie en entrée sera codée en dur, et l’API n’enregistrera pas cette entrée. Elle se contentera plutôt de renvoyer une partie des informations.
Définir les API points de terminaison
Qu’est-ce qu’un API point de terminaison ?
Un API point de terminaison est une URL unique qui représente un objet. Pour interagir avec cet objet, votre application doit pointer vers 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 à l’aide de différentes méthodes HTTP; par exemple, POST /orders pourrait créer une nouvelle commande, ou GET /orders pourrait récupérer l’ensemble de données d’une ou de plusieurs commandes.HTTP GET vers le point de terminaison /timesheets permettra à un utilisateur de récupérer ses timesheets, et une requête HTTP POST vers le point de terminaison /timesheets permettra à un utilisateur d’ajouter une nouvelle timesheet.
Consultez la mise en œuvre dans Node.js
Sécuriser les points de terminaison
Missing or invalid token à l’intention de l’application appelante.
Les validations que l’API doit effectuer sont les suivantes :
- Vérifier que le est bien formé
- Vérifier la signature
- Valider les claims standard
JWT.io fournit une liste de bibliothèques qui peuvent faire l’essentiel du travail pour vous : analyser le JWT, vérifier la signature et les claims.
Vérifier les permissions du client
Déterminer l’identité de l’utilisateur
sub, qui identifie le principal auquel la claim s’applique. Dans le cas du flux Implicit Grant, cette claim contiendra l’identité de l’utilisateur, c’est-à-dire l’identifiant unique de l’utilisateur Auth0. Vous pouvez vous en servir pour associer à un utilisateur particulier toute information stockée dans des systèmes externes.
Vous pouvez également utiliser une custom claim pour ajouter un autre attribut de l’utilisateur — comme son adresse courriel — au jeton d’accès et vous en servir pour identifier l’utilisateur de façon unique.
Consultez la mise en œuvre dans Node.js
Mettre en œuvre 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 la mise en œuvre dans Android.
Obtenir les identifiants
authorization_code de la réponse contre un jeton d’accès qui peut être utilisé pour faire des requêtes à votre API. Effectuez une requête POST vers l’URL du jeton en incluant les données suivantes :
La réponse de l’URL de jeton contiendra :
- access_token: un jeton d’accès pour l’API, précisé par l’
audience. - refresh_token: un Refresh Token ne sera présent que si vous avez inclus le scope
offline_accessET activé Allow Offline Access pour votre API dans le Dashboard. - id_token: un JWT contenant des renseignements du profil utilisateur.
- token_type: une chaîne indiquant le type de jeton; il s’agira 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 des éléments de l’interface utilisateur de façon conditionnelle 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 devrez examiner le scope qui lui a été accordé au moment de son authentification. Il s’agira d’une chaîne contenant tous les scopes; vous devrez donc l’examiner pour vérifier si elle contient le scope requis et décider, en conséquence, s’il faut afficher un élément particulier de l’interface utilisateur.
Voir la mise en œuvre sur Android
Appeler l’API
Authorization en utilisant le schéma Bearer.
Voir la mise en œuvre sur Android.
Actualiser le jeton
POST au point de terminaison /oauth/token à l’aide du obtenu dans votre résultat d’autorisation.
Un Refresh Token ne sera 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 le Dashboard.
Votre requête doit inclure :
La réponse comprendra le nouveau jeton d’accès :