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.
Pour définir le champ
context.clientMetadata
avecrequired_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.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.Une fois terminé, sélectionnez Enregistrer les modifications. Désormais, lorsque vous vous connecterez à partir de cette application, dans
context.clientMetadata
, vous aurez le champrequired_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.
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.
Ajoutez cette règle et assurez-vous qu’elle figure après la règle « auth0-authorization-extension » générée.
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?
/