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.
- JavaScript;
- Règles d’Auth0
1. Créer la ressource API PetPurchase
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 enfantPurchase
. 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 :
purchase
qui appelle le PetPurchase
Lambda Assurez-vous d’ajouter également l’en-tête Access-Control-Allow-Origin
avec une valeur de *
à la méthode POST en utilisant la configuration de réponse de la méthode/réponse d’intégration que l’on trouve dans la Section Configurer CORS et déployer l’API de l’étape 2 - Sécuriser et déployer la passerelle API Amazon.
Testez la méthode de passerelle API en fournissant les éléments suivants comme message d’entrée :
2. Utilisez IAM pour sécuriser l’API PurchasePet
Mettre à jour IAM
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ôleauth0-api-social-role
.
L’ARN de la méthode que vous sécuriserez dans la politique IAM devrait ressembler à ceci :
/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 compagnieauth0-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.- Accédez à Auth0 Dashboard > Authentification > Sociale et sélectionnez Créer une connexion.
- Sélectionnez la connexion que vous souhaitez configurer et consentez.
- Copiez et collez le
Client ID
etClient 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.
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 dossierpets
, 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 utilisegetOptionsForRole
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
:
Mettez à jour la logique du contrôleur principal pour permettre aux utilisateurs sociaux d’acheter des animaux de compagnie.
Danshome.js
, modifiez la fonction buyPet
pour activer les achats d’animaux de compagnie :
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.
Appliquer l’affectation de rôles
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.- Accédez à Auth0 Dashboard > Règles du pipeline et sélectionnez Créer une règle.
- Choisissez le modèle Règle vide
-
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.
- Enregistrer les modifications.
Mises en garde
- 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.