Passer au contenu principal
Les actions Auth0 vous permettent de modifier ou de compléter le résultat de la décision prise par une politique d’autorisation préconfigurée afin que vous puissiez gérer des cas plus compliqués qu’avec le contrôle d’accès basé sur les rôles (RBAC) seul. En fonction de leur ordre d’exécution, les actions peuvent modifier le résultat d’une décision d’autorisation avant que les autorisations ne soient ajoutées au jeton d’accès. Elles peuvent également vous permettre de personnaliser le contenu de vos jetons.

Autoriser l’accès uniquement les jours ouvrables pour une application spécifique

Supposons que vous ayez une application que vous souhaitez ne rendre accessible que pendant les jours ouvrables. Allez àCréer une nouvelle action et sélectionnez le déclencheur Connexion/Post-connexion pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :
exports.onExecutePostLogin = async (event, api) => {
  if (event.client.name === "APP_NAME") {
    const d = new Date().getDay();

    if (d === 0 || d === 6) {
      api.access.deny("This app is only available during the week.");
    }
  }
}
Enfin, ajoutez l’action que vous avez créée au Flux de connexion. Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans Rédigez votre première action. Si un utilisateur tente d’accéder à l’application pendant la fin de semaine, l’accès lui sera refusé, même s’il s’authentifie et dispose des privilèges appropriés.

Autoriser l’accès uniquement aux utilisateurs qui se trouvent à l’intérieur du réseau de l’entreprise

Supposons que vous souhaitiez autoriser l’accès à une application, mais uniquement pour les utilisateurs qui accèdent à l’application depuis le réseau de votre entreprise. Allez àCréer une nouvelle action et sélectionnez le déclencheur Login / Post Login pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :
const ipaddr = require("ipaddr.js");

exports.onExecutePostLogin = async (event, api) => {
  const corpNetwork = "192.168.1.134/26";
  const currentIp = ipaddr.parse(event.request.ip);

  if (!currentIp.match(ipaddr.parseCIDR(corpNetwork))) {
    api.access.deny("This app is only available from inside the corporate network.");
  };
};
Enfin, ajoutez l’action que vous avez créée au Flux de connexion. Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans Rédigez votre première action. Si l’utilisateur se trouve en dehors du réseau de l’entreprise, l’accès lui sera refusé même s’il s’authentifie avec succès et qu’il dispose des privilèges appropriés.
Pour utiliser une bibliothèque npm telle que ipaddr.js, vous devez ajouter la bibliothèque à l’action en tant que dépendance. Pour en savoir plus, consultez la section « Ajout d’une dépendance » dans Rédiger votre première action.

Interdire l’accès à toute personne appelant une API

Supposons que vous souhaitiez refuser l’accès à tous les utilisateurs qui appellent une API. Cela signifie que vous devez refuser l’accès en fonction de la valeur de l’identifiant de votre API, que vous pouvez trouver dans le champ de l’API de votre API dans Tableau de bord Auth0 > Applications > API. Allez àCréer une nouvelle action et sélectionnez le déclencheur Connexion/Post-connexion pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :
exports.onExecutePostLogin = async (event, api) => {
  // In Actions, an API will be referred to as a Resource Server.
  const { identifier } = event.resource_server || {};
  if (identifier === "https://api.example.com") {
    api.access.deny("end_users_not_allowed");
  }
}
Enfin, ajoutez l’action que vous avez créée au Flux de connexion. Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans Rédigez votre première action. Dans ce cas la valeur de l’identifier pour l’API est https://api.example.com, ce sera donc l’audience que nous allons refuser.

Ajouter des rôles d’utilisateur aux jetons

Pour ajouter des rôles d’utilisateur aux jetons émis par Auth0, utilisez l’objet event.authorization avec les méthodes api.idToken.setCustomClaim et api.accessToken.setCustomClaim. Allez àCréer une nouvelle action et sélectionnez le déclencheur Login / Post Login pour ajouter l’action au flux de connexion. Copiez le code suivant dans l’éditeur de code d’actions :
exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://my-app.example.com';
  if (event.authorization) {
    api.idToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
    api.accessToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
  }
}
Enfin, ajoutez l’action que vous avez créée au Flux de connexion. Pour savoir comment attacher des actions à des flux, lisez la section « Joindre l’action à un flux » dans Rédigez votre première action. Rappelez-vous :
  • Le renvoyé à l’application demandeuse est construit et signé à la fin du traitement du déclencheur. Le JWT final signé n’est pas accessible dans une action.
I