Règles d’utilisation avec Authorization Extension

Vous pouvez utiliser les règles d'Auth0 avec Authorization Extension pour faire des choses comme :

  • Ajouter des demandes personnalisées au jeton émis.

  • Déterminer l’appartenance de l’utilisateur à un groupe, ses rôles et ses autorisations.

  • Stocker les informations sur les groupes, les rôles et les autorisations de l’utilisateur dans app_metadata.

  • Ajouter les groupes, rôles et permissions de l’utilisateur au jeton sortant (qui peut être demandé via la permission openid groups permissions roles).

Comme la logique ci-dessus fait partie d’une règle, elle ne sera exécutée que dans le contexte d’une connexion. Si des utilisateurs sont ajoutés à un groupe ou en sont retirés, ce changement ne sera reflété dans Auth0 qu’après la prochaine connexion de l’utilisateur.

Pour en savoir plus, veuillez consulter Règles d'Auth0.

Ajouter des demandes personnalisées au jeton émis

Vous pouvez ajouter des demandes personnalisées à vos jetons en créant une règle supplémentaire qui autorise Authorization Extension à le faire. Les demandes personnalisées peuvent être à espacement de noms ou non.

Pour en savoir plus, lisez Créer des demandes personnalisées

Vous devez limiter le nombre de demandes que vous ajoutez au jeton.

function (user, context, callback) {
  var namespace = 'http://yourdomain/claims/'; // You can set your own namespace, but do not use an Auth0 domain

  // Add the namespaced tokens. Remove any which is not necessary for your scenario
  context.idToken[namespace + "permissions"] = user.permissions;
  context.idToken[namespace + "groups"] = user.groups;
  context.idToken[namespace + "roles"] = user.roles;
  
  callback(null, user, context);
}

Was this helpful?

/

Cette règle doit être exécutée après la règle d’Authorization Extension. Pour vous en assurer, veillez à la placer en dessous de la règle d’Authorization Extension.

Lorsque vous appelez le point de terminaison /authorize ou que vous configurez Lock, vous devez préciser les informations que vous souhaitez dans scope en indiquant groups, permissions et/ou roles.

Contrôler l’accès aux applications

Vous pouvez également écrire des règles qui sont exécutées après la règle d’Authorization Extension pour faire des choses comme contrôler l’accès à votre application. L’une des méthodes consiste à indiquer les rôles requis pour chaque application à l’aide des métadonnées de l’application.

Pour plus de détails, consultez Gérer les métadonnées avec des règles.

Définir les rôles requis pour les métadonnées de l’application

Vous pouvez définir les métadonnées de l’application avec des rôles, qui sont des groupes d’autorisations que vous regroupez pour créer un ensemble particulier de fonctionnalités. Vous pouvez considérer cette étape comme un « étiquetage » de l’application, de sorte que les règles que vous définissez sachent sur quelle application agir.

  1. Pour définir le champ context.clientMetadata avec required_roles, sélectionnez l’application sur laquelle vous souhaitez travailler à partir d’Auth0 Dashboard > Applications > Applications. Vous accédez ainsi aux Paramètres de l’application. Faites défiler vers le bas et sélectionnez Afficher les paramètres avancés au bas de la page.

  2. Sous Métadonnées de l’application, ajoutez un élément en définissant Key sur required_roles et, dans le champ Value, énumérez vos rôles en les séparant par des virgules. Sélectionnez + Ajouter pour ajouter le champ.

  3. Une fois terminé, sélectionnez Enregistrer les modifications. Désormais, lorsque vous vous connecterez à partir de cette application, dans context.clientMetadata, vous aurez le champ required_roles avec la chaîne de valeur des rôles que vous avez saisie.

Créer une règle appliquant les rôles des applications

Maintenant que chaque application a un rôle qui lui est associé, vous pouvez créer la règle qui s’exécute avec cet élément d’information sur l’application dans le contexte.

  1. Avant de créer cette règle, activez Roles (Rôles) sous Token Contents (Contenus du jeton) et publiez la règle d’Authorization Extension.

  2. Ajoutez cette règle et assurez-vous qu’elle figure après la règle « auth0-authorization-extension » générée.

  3. Après avoir défini required_roles, créez une nouvelle règle avec le corps suivant :

    function (user, context, callback) {
      context.clientMetadata = context.clientMetadata || {};
      if (context.clientMetadata.required_roles && context.clientMetadata.required_roles.length){
        if (user.roles) {
          var _ = require('lodash');
          var roles = context.clientMetadata.required_roles.split(',');
          var matchingRoles =_.filter(user.roles, function(roleName) {
            return _.includes(roles, roleName);
          });
    
          if (matchingRoles && matchingRoles.length) {
            return callback(null, user, context);
          }
        }
    
        return callback(new UnauthorizedError('You do not have the required role to access ' + context.clientName));
      }
    
     callback(null, user, context);
    }

    Was this helpful?

    /

En savoir plus