Cette fonctionnalité utilise la délégation. Par défaut, la délégation est désactivée pour les locataires sans module complémentaire en cours d’utilisation depuis le 8 juin 2017. Les anciens locataires qui utilisent actuellement un module complémentaire nécessitant une délégation peuvent continuer à utiliser cette fonction. Si la fonctionnalité de délégation est modifiée ou supprimée à un moment donné, les clients qui l’utilisent seront informés à l’avance et disposeront d’un délai suffisant pour migrer. Par ailleurs, notez que la délégation ne prend pas en charge l’utilisation de domaines personnalisés, si bien que toutes les fonctionnalités qui en dépendent risquent de ne pas être pleinement fonctionnelles avec un domaine personnalisé.
Étape 4 - Utiliser plusieurs rôles avec Amazon API Gateway
Dans cette étape, vous attribuerez différents rôles AWS IAM aux utilisateurs en fonction des informations d’authentification :
Les utilisateurs s’authentifiant avec connexions sociales seront traités comme des acheteurs;
Les utilisateurs s’authentifiant avec les connexions de la base de données seront traités comme des administrateurs.
Vous exécuterez cette logique d’attribution de rôle de deux manières différentes :
JavaScript;
Règles d’Auth0
Pour de nombreuses applications Auth0, vous aurez besoin d’accorder à différents utilisateurs des niveaux d’accès distincts et de disposer d’informations supplémentaires concernant une identité spécifique à utiliser dans votre logique de service. Dans les situations où il s’agit simplement de restreindre l’accès au niveau de l’API, différents rôles AWS IAM peuvent être mis en œuvre (par exemple, les administrateurs peuvent utiliser la fonction de mise à jour pour ajouter ou supprimer des animaux de compagnie, tandis que les utilisateurs sociaux ne peuvent que les acheter).Le diagramme ci-dessous présente les attributions de rôles AWS IAM pour deux catégories distinctes d’utilisateurs : ceux authentifiés via les connexions sociales et ceux authentifiés via les connexions de base de données. Il démontre également que les rôles AWS IAM peuvent être affectés à d’autres entités, telles que les fonctions AWS Lambda, afin de gérer les permissions qui leur sont accordées pour compte particulier. En résumé, un rôle IAM représente un ensemble d’autorisations sur les services AWS, défini par une ou plusieurs politiques, puis assigné à une entité.Dans les situations où vous souhaitez prendre des décisions au sein de votre code (par exemple, vérifier la solvabilité d’un utilisateur achetant un animal de compagnie), il peut être nécessaire de transmettre également l’identité de l’utilisateur. Ceci sera démontré ci-dessous dans l’Étape 5 – Utilisation de jetons d’ID pour transmettre l’identité.
En utilisant la Console de passerelle Amazon API, sélectionnez votre API Pets. Vous serez redirigé vers sa page Ressources.Cliquez sur Actions et Créer une ressource. Nommez la nouvelle ressource enfant Purchase. Cliquez sur Créer une ressource.Ajoutez une méthode OPTIONS pour la ressource purchase, comme indiqué précédemment pour les pets dans la Section Configurer CORS et déployer l’API de l’étape 2 - Sécuriser et déployer la passerelle API Amazon.Créez une nouvelle fonction AWS Lambda pour l’achat d’un animal de compagnie appelé PetPurchase, ce qui ajoute les attributs isSold et soldTo à un animal de compagnie comme suit :
Report incorrect code
Copy
Ask AI
var AWS = require('aws-sdk');var DOC = require('dynamodb-doc');var dynamo = new DOC.DynamoDB();exports.handler = function(event, context) { var petId = event.petId; var user = event.userName; var pets = {}; console.log('start PetsPurchase, petId', petId, ' userName', user); var writecb = function(err, data) { if(!err) { context.done(null, pets); } else { console.log('error on GetPetsInfo: ',err); context.done('failed on update', null); } }; var readcb = function(err, data) { if(err) { console.log('error on GetPetsInfo: ',err); context.done('failed to retrieve pet information', null); } else { // make sure we have pets if(data.Item && data.Item.pets) { pets = data.Item.pets; var found = false; for(var i = 0; i < pets.length && !found; i++) { if(pets[i].id === petId) { if(!pets[i].isSold) { pets[i].isSold = true; pets[i].soldTo = user; var item = { username:"default",pets: pets}; dynamo.putItem({TableName:"Pets", Item:item}, writecb); found = true; } } } if(!found) { console.log('pet not found'); context.done('That pet is not available.', null); } } else { console.log('pet already sold'); context.done('That pet is not available.', null); } } }; dynamo.getItem({TableName:"Pets", Key:{username:"default"}}, readcb);};
Pour sécuriser votre API, suivez le même processus que pour ajouter un nouveau rôle que vous avez effectué dans la partie 2 de ce tutoriel. Appeler le nouveau rôle auth0-api-social-role.L’ARN de la méthode que vous sécuriserez dans la politique IAM devrait ressembler à ceci :
Assurez-vous également de mettre à jour la politique de confiance.Accédez à Console de passerelle Amazon API, et sélectionnez la méthode POST pour la ressource /pets/purchase. Sélectionner Demande de méthode et changer Type d’autorisation à AWS_IAM. Cliquez sur la coche pour enregistrer le paramètre.À ce stade, vous avez défini deux rôles que vous pouvez utiliser avec la passerelle API :
auth0-api-role : permet de mettre à jour les animaux de compagnie
auth0-api-social-role : permet d’acheter un animal de compagnie
Configurer la Connexion avec Amazon et mettre à jour Auth0
Vous pouvez créer un rôle social en utilisant la Connexion avec Amazon (LWA).Bien que ce didacticiel inclue des instructions sur l’utilisation de la Connexion avec Amazon, veuillez noter que vous pouvez également utiliser d’autres fournisseurs sociaux.
Sélectionnez la connexion que vous souhaitez configurer et consentez.
Copiez et collez le Client ID et Client Secret à partir de votre fournisseur d’identité sociale, sélectionnez Attributs (et Autorisations, le cas échéant), et cliquez sur Enregistrer.
Sélectionnez l’onglet Applications, activez la bascule pour chacune de vos applications Auth0 qui doivent pouvoir utiliser cette connexion, puis cliquez sur Enregistrer.
Une fois que vous avez saisi les informations appropriées, sélectionnez Essayer la connexion pour vous assurer que tout est correctement configuré.Lorsque vous configurez LWA à l’aide de la console Amazon, assurez-vous de saisir dans les URL de retour autorisées l’URL de rappel à votre application Auth0, qui devrait ressembler à quelque chose comme https://pierreuntel.auth0.com/login/callback. La page d’aide Auth0 vous montrera spécifiquement ce que vous devez saisir.Accédez à Auth0 Dashboard > Applications > Applications et sélectionnez votre application pour afficher ses paramètres. Sélectionnez Connexions voir, localiser la section Sociale, et assurez-vous que Amazon est activé.
Déployer l’API et mettre à jour l’application à une seule page
Déployer l’API
En utilisant la Console de passerelle Amazon API, vous allez à nouveau déployer l’API et générer une nouvelle trousse SDK JavaScript.À ce stade, vous avez effectué les modifications de configuration nécessaires pour permettre les achats d’animaux de compagnie. Pour activer cette mise à jour, copiez votre trousse SDK nouvellement téléchargée sur le précédent dans votre dossier pets, ainsi que votre bucket Amazon S3.
Mettez à jour la logique du contrôleur de connexion afin de choisir des rôles différents pour chaque type d’utilisateur.
La logique du contrôleur de connexion utilise getOptionsForRole pour sélectionner différents rôles pour différents utilisateurs. Lorsque vous obtenez le jeton de délégation, vous pouvez indiquer à Auth0 quel rôle utiliser (c’est-à-dire, l’utilisateur est un administrateur ou non).Dans le fichier pets/login/login.js, modifier les valeurs de role et de principal pour l’utilisateur non-administrateur afin d’attribuer le rôle IAM de l’utilisateur social que vous venez de créer.À ce stade, vous devriez être en mesure de vous connecter en utilisant les identifiants Amazon ou ceux de l’utilisateur de base de données que vous avez créés précédemment. Veuillez noter que l’interface utilisateur autorise un utilisateur social à acheter des animaux de compagnie, tandis qu’un utilisateur administrateur peut en ajouter ou en supprimer.Pour tester cette fonctionnalité, vous pouvez masquer temporairement la touche Supprimer dans l’interface utilisateur en supprimant ng-show="isAdmin" dans /pets/home/home.html :
Après avoir transféré les modifications dans votre bucket S3, tentez de supprimer un animal de compagnie tout en étant connecté en tant qu’utilisateur social.
Mettez à jour la logique du contrôleur principal pour permettre aux utilisateurs sociaux d’acheter des animaux de compagnie.
Dans home.js, modifiez la fonction buyPet pour activer les achats d’animaux de compagnie :
Copiez le code dans votre bucket S3, déconnectez-vous, puis reconnectez-vous en tant qu’utilisateur social en cliquant sur l’icône Amazon dans la boîte de dialogue Lock login. Vous devrez peut-être avoir besoin de cliquer sur AFFICHER TOUT, si votre connexion précédente persiste dans le volet Lock.Veuillez noter qu’en tant qu’utilisateur Amazon, vous êtes autorisé à acheter un animal de compagnie, mais vous ne pouvez ni en ajouter ni en supprimer. En revanche, si vous vous connectez en tant qu’utilisateur via une connexion à la base de données, vous pouvez ajouter et supprimer des animaux de compagnie, mais vous ne pouvez pas en acheter.
Appliquer l’attribution des rôles avec les règles d’Auth0
Dans certains cas, vous pouvez définir le rôle approprié à l’aide de l’application (comme illustré ici). Cependant, pour des raisons de sécurité, par exemple, afin d’éviter qu’un utilisateur n’assume un rôle plus privilégié que nécessaire, il peut être préférable de déterminer les privilèges de l’utilisateur côté serveur.Avec Auth0, cela est possible grâce aux règles, qui sont des instructions logiques que vous configurez et qui s’exécutent durant le processus d’authentification Auth0. Par exemple, vous pouvez créer des règles pour :
éliminer la transmission des informations de rôle du navigateur à l’application;
insérez les informations de rôle dans la demande de délégation en fonction de la source d’authentification.
Vous ajouterez une règle qui vérifiera si le rôle demandé par l’utilisateur est autorisé, en fonction de son association avec une connexion sociale ou de base de données.
Nommez la règle AWS Pets (ou quelque chose de similaire), puis remplissez le corps de la règle avec ce qui suit JavaScript code :
Assurez-vous d’ajuster le code ci-dessus avec les valeurs correctes pour votre intégration. Les champs sont Princial ARN, Rôle ARN, et Client Secret.
4. Enregistrer les modifications.
Les règles s’exécutent à une permission globale pour chaque authentification. Vous ne devez exécuter la logique que sur les demandes d’authentification associées à une application donnée (c’est pourquoi le script utilisé demande le clientID). En l’absence de ces informations, la logique s’exécute à chaque demande d’authentification associée à votre compte Auth0.
Les informations sont transmises à la règle, accompagnées du contexte et de l’utilisateur.
Vous pouvez étendre les objets transmis à la règle. Dans le code ci-dessus, la règle examine le corps de la demande pour extraire les informations relatives aux rôles. Le rôle est défini dans le contexte addonConfiguration du rôle autorisé, qui remplace toujours les paramètres dans le corps de la demande.
Vous êtes prêt à déboguer votre/vos règle(s). Sélectionnez Essayez cette règle, et un script vous sera présenté pour tester la logique de la règle Sélectionner Essayer.Vous verrez alors le résultat de l’exécution de votre règle.