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 2 - Sécuriser et déployer la Passerelle API Amazon
Maintenant que votre API fonctionne, vous devez ajouter un niveau de sécurité. Au cours de cette étape, vous allez :- Sécurisez l’API de mise à jour pour limiter l’accès aux utilisateurs authentifiés ayant un rôle IAM AWS spécifique;
- Configurez la délégation Auth0 pour utiliser les fonctionnalités de la fédération IAM AWS;
- Obtenez un jeton d’accès AWS qui utilise le rôle IAM AWS.
- En utilisant la délégation Auth0 avec IAM AWS;
- En ajoutant un jeton d’ID pour acheminer l’identité vers la fonction Lambda.
Procédures de sécurisation de la Passerelle API Amazon
La Passerelle API AWS offre différentes méthodes pour sécuriser vos API :- Les clés API;
- IAM;
- Amazon Cognito.
- L’attribution d’un secret de longue durée sur l’application est risquée (cette dernière est plus facile à compromettre);
- La création d’un cadre d’applications pour émettre et gérer des clés API nécessite une mise en œuvre sécurisée parfois complexe.
1. Configuration d’IAM et d’Auth0 pour intégrer SAML avec la Passerelle API
Vous pouvez spécifier le rôle IAM AWS pour le jeton SAML que vous échangez contre un jeton AWS. Le jeton reçu bénéficie des mêmes autorisations que celles attribuées au rôle IAM en question (qui sont définies par votre fournisseur d’identité). En émettant différents jetons SAML, chacun avec son propre rôle IAM AWS, vous pouvez contrôler les niveaux d’accès de vos utilisateurs. Par exemple, le fournisseur d’identité peut indiquer le rôle IAM en fonction de l’appartenance à un groupe (p.ex. : un administrateur dans Active Directory) ou de la source d’authentification (p.ex. : une connexion à une base de données ou un fournisseur social comme Facebook). Cette approche vous permet de différencier les autorisations d’accès des utilisateurs à vos méthodes de Passerelle API Amazon lorsque ces dernières sont sécurisées à l’aide d’IAM AWS.Configuration d’Auth0
Connectez-vous à votre compte Auth0. Vous accéderez au Management Dashboard. Cliquez sur le bouton + Nouvelle application, situé dans le coin supérieur droit de la page. Nommez votre nouvelle application Passerelle API AWS, et indiquez qu’il s’agira d’une application à page unique. Cliquez sur Créer. Accédez à l’onglet modules complémentaires de l’application que vous venez de créer. Cliquez sur la diapositive appropriée pour activer Amazon Web Services. Cela active la délégation AWS.Configurer AWS
Suivez le tutoriel intitulé Comment configurer AWS pour l’authentification déléguée afin de configurer l’accès délégué à AWS par le biais du protocole SAML. Quelques mises en garde :- Suivez les instructions ci-dessous pour associer la politique de permissions à votre rôle et non à celui indiqué dans le tutoriel ;
- Nommez le fournisseur SAML que vous avez créé comme suit :
auth0
; - Nommez le rôle IAM AWS comme suit :
auth0-api-role
.
Définissez la politique d’autorisation en fonction de votre rôle IAM AWS.
Une fois que vous avez configuré le rôle IAM AWS, vous ajouterez une politique àauth0-api-role
qui vous permettra d’exécuter vos méthodes Passerelle API. Pour plus d’informations sur cette procédure, veuillez consulter User Access Permissions for Amazon API Gateway (Autorisations d’accès des utilisateurs à la Passerelle API Amazon).
Récupération de l’ARN de la Passerelle API.
Avant de commencer, vous aurez besoin de l’ARN de votre Passerelle API :- Accédez à la Console de Passerelle API Amazon et connectez-vous.
- Sélectionnez l’API appropriée.
- Cliquez sur n’importe quelle méthode associée à l’API pour afficher la page exécution de la méthode.
- Sur cette dernière, l’ARN de l’API se trouve dans le champ requête de méthode, bien qu’il inclut le nom de méthode suivant :
arn:aws:execute-api:us-east-2:484857107747:97i1dwv0j4/*/POST/
Vous devez supprimer le nom de la méthode pour obtenir l’ARN de base de l’API :
arn:aws:execute-api:us-east-2:484857107747:97i1dwv0j4/*
Le caractère de remplacement (*
) dans l’ARN ci-dessus permet d’autoriser l’accès à votre API à toutes les étapes, mais vous pouvez déployer les différentes étapes individuellement (par exemple, la phase de développement d’abord, puis de test, et de production).
Sélectionnez le rôle auth0-api-role
que vous venez de créer pour ouvrir la page Résumé qui lui est associée.
Agrandissez la section Politiques en ligne et cliquez sur cliquer ici.
Sélectionnez Politique personnalisée et cliquez sur Sélectionner.
Modifiez le document de politique. Vous pouvez définir le Nom de la politique à ce que vous voulez, mais nous suggérons quelque chose comme api-gateway-policy
. Pour autoriser l’accès aux méthodes de l’API pour le rôle en question, appliquez cette politique après avoir mis à jour l’ARN avec celui de votre API.
/pets
.
Cliquez sur le lien Requête de méthode.
Cliquez sur l’icône de modification à côté du Authorization Type (Type d’autorisation), et sélectionnez AWS_IAM. Cliquez maintenant sur le bouton Check (Vérifier) à côté du champ pour enregistrer ce paramètre.
2. Configuration du partage des ressources inter-origines (CORS) et déploiement de l’API
Notre application à page unique (SPA) accédera aux méthodes de l’API web à partir d’un domaine différent de celui de la page. La configuration du partage des ressources inter-origines doit explicitement autoriser cette action pour que le navigateur permette l’accès à la Passerelle API AWS. En règle générale, le navigateur envoie d’abord une requêteOPTIONS
pour voir quelles sont les actions autorisées par le site.
Sélectionnez /pets
sous Ressources et cliquez sur Créer la méthode. Dans le menu déroulant, sélectionnez OPTIONS et cliquez sur la coche pour enregistrer la configuration.
Le navigateur utilise la méthode Options pour obtenir les en-têtes HTTP requis, mais la fonction a besoin d’instructions supplémentaires pour s’exécuter correctement. Sous l’écran de configuration OPTIONS
, définissez les variables et paramètres suivants :
- Type d’intégration : Fonction Lambda;
- Utiliser l’intégration Proxy Lambda : ne pas cocher;
- Région Lambda : sélectionnez votre région;
- Fonction Lambda : NoOp.
OPTIONS
Méthode d’exécution. Ouvrez la page Réponse de méthode.
Élargissez la section 200 située sous la barre d’état HTTP et ajoutez les en-têtes de réponse suivants :
- Access-Control-Allow-Headers;
- Access-Control-Allow-Methods;
- Access-Control-Allow-Origin.
- Access-Control-Allow-Headers :
'Content-Type,X-Amz-Date,Authorization,x-api-key,x-amz-security-token'
; - Access-Control-Allow-Origin :
'*'
- Access-Control-Allow-Methods :
'POST, GET, OPTIONS'
'*'
.
Déployer l’API
Retournez sur la page Ressources de votre API. Cliquez sur Actions, et sélectionnez DÉPLOYER L’API. Sélectionnez New Stage (Nouvelle étape) pour l’état de déploiement et nommez l’étapeTest
. Cliquez sur le bouton Deploy (Déployer).
Sur la page des résultats, allez à la section Génération d’une trousse SDK. Sélectionnez JavaScript en tant que Plateforme. Cliquez sur le bouton Générer trousse SDK.
Enregistrez le fichier zip téléchargé pour une utilisation ultérieure.