Exemples de cas d’utilisation : actions avec autorisation

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.");
    }
  }
}

Was this helpful?

/

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.");
  };
};

Was this helpful?

/

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.

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 Audience 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");
  }
}

Was this helpful?

/

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);
  }
}

Was this helpful?

/

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 JWT 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.