Skip to main content
Dans cette section, nous passerons en revue toutes les configurations à appliquer dans l’Auth0 Dashboard.

Créer l’API

Cliquez sur l’option de menu APIs à gauche, puis sur le bouton Create API. Vous devrez fournir les renseignements suivants pour votre API :
  • Name : un nom convivial pour l’API. N’affecte aucune fonctionnalité.
  • Identifier : un identifiant unique pour l’API. Nous vous recommandons d’utiliser une URL, mais notez qu’il n’est pas nécessaire qu’elle soit accessible publiquement : Auth0 n’effectuera aucune requête vers votre API. Cette valeur ne peut pas être modifiée par la suite.
  •  : l’algorithme utilisé pour signer les jetons. Les valeurs possibles sont HS256 et RS256. Si vous sélectionnez RS256, le jeton sera signé avec la clé privée du tenant. Pour en savoir plus sur les algorithmes de signature, consultez Algorithmes de signature.
Dashboard - Applications - APIs - Create API - Popup
Remplissez les renseignements requis, puis cliquez sur le bouton Create.

Algorithmes de signature

Lorsque vous créez une API, vous devez sélectionner l’algorithme avec lequel vos jetons seront signés. La signature sert à vérifier que l’émetteur du est bien celui qu’il prétend être et à s’assurer que le message n’a pas été modifié en cours de route.
La signature fait partie d’un JWT. Si vous ne connaissez pas bien la structure d’un JWT, veuillez consulter Structure du JSON Web Token.
Pour créer la partie signature, vous devez prendre l’en-tête encodé, le payload encodé, un secret, l’algorithme indiqué dans l’en-tête, puis signer l’ensemble. Cet algorithme, qui fait partie de l’en-tête du JWT, est celui que vous sélectionnez pour votre API : HS256 ou RS256.
  • RS256 est un algorithme asymétrique, ce qui signifie qu’il y a deux clés : une publique et une privée (secrète). Auth0 possède la clé secrète, qui sert à générer la signature, et le consommateur du JWT possède la clé publique, qui sert à valider la signature.
  • HS256 est un algorithme symétrique, ce qui signifie qu’il n’y a qu’une seule clé secrète, partagée entre les deux parties. La même clé sert à la fois à générer la signature et à la valider. Il faut donc prendre des précautions particulières pour que la clé demeure confidentielle.
La pratique la plus sécuritaire, et celle que nous recommandons, est d’utiliser RS256. Voici quelques raisons :
  • Avec RS256, vous avez l’assurance que seul le détenteur de la clé privée (Auth0) peut signer des jetons, tandis que n’importe qui peut vérifier si le jeton est valide à l’aide de la clé publique.
  • Avec HS256, si la clé privée est compromise, vous devrez redéployer l’API avec le nouveau secret. Avec RS256, vous pouvez demander un jeton valide pour plusieurs audiences.
  • Avec RS256, vous pouvez effectuer une rotation des clés sans avoir à redéployer l’API avec le nouveau secret.
Pour un aperçu plus détaillé des algorithmes de signature JWT, consultez : Vue d’ensemble des algorithmes de signature de JSON Web Token (JWT).

Configurer les Permissions

Une fois l’application créée, vous devrez configurer les Permissions que les applications pourront demander pendant l’autorisation. Dans les paramètres de votre API, accédez à l’onglet Permissions. Dans cette section, vous pouvez ajouter les quatre scopes mentionnés précédemment, soit read:timesheetscreate:timesheetsdelete:timesheetsapprove:timesheets.
Dashboard - Applications - APIs - Permissions

Créer l’application

Auth0 propose quatre types d’application : Native App (utilisée par les applis mobiles ou de bureau), Single-Page Web App, Regular Web App et Machine to Machine App (utilisée par des CLI, des daemons ou des services exécutés sur votre backend). Dans ce scénario, nous voulons créer une nouvelle Application pour notre application mobile; nous utiliserons donc Native comme type d’application. Pour créer une nouvelle Application, accédez au dashboard, puis cliquez sur l’option de menu Applications à gauche. Cliquez sur le bouton + Create Application. Donnez un nom à votre Application (nous utiliserons Timesheets Mobile) et sélectionnez Native App comme type. Cliquez sur Create.

Configurer l’Authorization Extension

Vous devrez vous assurer que l’Authorization Extension est installée dans votre tenant. Vous pouvez consulter la documentation de l’Authorization Extension pour savoir comment procéder.

Définir les permissions

Vous devrez définir des permissions qui correspondent aux scopes que vous avez déjà définis. Dans l’Authorization Extension, cliquez sur l’onglet Permissions, puis sur le bouton Create Permission. Dans la boîte de dialogue, saisissez les détails de chaque permission. Assurez-vous que le nom de la permission est exactement le même que le scope correspondant : Créez ensuite les permissions pour tous les scopes restants :

Définir des rôles

Rendez-vous dans l’onglet Roles et créez deux rôles. Cliquez sur le bouton Create Role, puis sélectionnez l’application Timesheets SPA. Donnez au rôle le nom et la description Employee, puis sélectionnez les permissions delete:timesheetscreate:timesheets et read:timesheets. Cliquez sur Enregistrer. Ensuite, suivez le même processus pour créer le rôle Manager et assurez-vous d’avoir sélectionné toutes les permissions :
Dashboard - Extensions - Authorization Extension - Create Manager Role

Attribuer des utilisateurs à des rôles

Vous devrez attribuer tous les utilisateurs soit au rôle Manager, soit au rôle User. Pour ce faire, allez à l’onglet Users de l’Authorization Extension et sélectionnez un utilisateur. À l’écran d’information de l’utilisateur, allez à l’onglet Roles. Vous pouvez ajouter un rôle à l’utilisateur en cliquant sur le bouton Add Role to User et en sélectionnant le rôle approprié.

Configuration de l’Authorization Extension

Vous devez aussi vous assurer que la Rule de l’Authorization Extension est bien publiée. Pour ce faire, cliquez sur votre avatar dans le coin supérieur droit de l’Authorization Extension, puis sélectionnez l’option Configuration : Assurez-vous d’avoir activé Permissions, puis cliquez sur le bouton Publish Rule.

Créer une Rule pour valider les scopes du jeton

La dernière étape de ce processus consiste à créer une Rule qui validera que les scopes contenus dans un sont valides en fonction des permissions attribuées à l’utilisateur. Tous les scopes qui ne sont pas valides pour un utilisateur doivent être supprimés du jeton d’accès. Dans votre , accédez à l’onglet Rules. Vous devriez voir la Rule créée par l’Authorization Extension. Cliquez sur le bouton Create Rule et sélectionnez le modèle Empty Rule. Vous pouvez donner un nom à la Rule, par exemple Access Token Scopes, puis indiquer le code suivant pour la Rule :
Le code ci-dessus garantira que tous les jetons d’accès ne contiennent que des scopes correctement formatés (p. ex., action:area ou delete:timesheets) qui sont valides selon les permissions de l’utilisateur. Une fois terminé, vous pouvez cliquer sur le bouton Enregistrer. Les Rules s’exécutent dans l’ordre où elles sont affichées sur la page Rules; assurez-vous donc que la nouvelle règle que vous avez créée est placée sous la règle de l’Authorization Extension, pour qu’elle s’exécute après la règle Authorization Extension. TUTORIEL PRÉCÉDENT 1. Aperçu de la solution TUTORIEL SUIVANT 3. API + mise en œuvre mobile