Comment configurer un groupe d'utilisateurs Amazon Cognito en tant qu'autorisateur sur une API REST d'API Gateway ?
Je souhaite configurer un groupe d'utilisateurs Amazon Cognito en tant qu'autorisateur sur mon API REST Amazon API Gateway.
Brève description
Il existe deux manières de configurer un groupe d'utilisateurs Amazon Cognito en tant qu'autorisateur sur une API REST d'API Gateway :
Vous pouvez utiliser des jetons d'identification ou des jetons d'accès pour l'autorisation. Les jetons d'accès peuvent autoriser l'accès aux API d’API Gateway à l'aide de portées personnalisées dans Amazon Cognito. Un autorisateur Lambda peut valider les demandes contenues dans les jetons d'identification et les jetons d'accès émis par Amazon Cognito.
Pour plus d'informations, consultez les rubriques suivantes :
- Utilisation de jetons avec des groupes d'utilisateurs
- Définition de serveurs de ressources pour votre groupe d'utilisateurs
- Création d'un groupe d'utilisateurs Amazon Cognito pour une API REST
Résolution
La procédure suivante montre comment créer un autorisateur COGNITO_USER_POOLS. L'exemple suppose que vous avez déjà créé deux éléments :
- Un groupe d'utilisateurs Amazon Cognito avec un client d'application.
- Une ressource d'API REST d'API Gateway.
Création d'un autorisateur COGNITO_USER_POOLS
Pour plus d'informations, consultez la section Intégrer une API REST à un groupe d'utilisateurs Amazon Cognito. Suivez les instructions de la section Pour créer un autorisateur COGNITO_USER_POOLS à l'aide de la console API Gateway.
Testez le nouveau système d'autorisation COGNITO_USER_POOLS
Après avoir créé l'autorisateur COGNITO_USER_POOLS, procédez comme suit :
1. Dans la console API Gateway, cliquez sur le bouton Test situé sous le nouvel autorisateur.
2. Dans la fenêtre de test, pour l'autorisation, entrez un jeton d'identification provenant du nouveau groupe d'utilisateurs Amazon Cognito.
3. Choisissez Test.
Remarque : Si le jeton d'identification est correct, le test renvoie un code de réponse 200. Un jeton d'identification incorrect renvoie un code de réponse 401.
Configurer l'autorisateur COGNITO_USER_POOLS sur une méthode d'API
Pour plus d'informations, consultez la section Intégrer une API REST à un groupe d'utilisateurs Amazon Cognito. Suivez les instructions de la section Pour configurer un autorisateur COGNITO_USER_POOLS sur les méthodes.
Obtenir des jetons d'autorisation
Il existe quatre manières d'obtenir des jetons d'autorisation :
- Configurez l'interface utilisateur hébergée pour Amazon Cognito.
- Utiliser l'interface de ligne de commande AWS (AWS CLI)
- Utilisez l'un des kits AWS SDK.
- Utilisez l'application Postman.
Remarque : Configurez l'interface utilisateur hébergée par Amazon Cognito avec une attribution de code d'autorisation afin que votre application puisse échanger le code contre un point de terminaison à jetons.
Si vous utilisez un type de subvention implicite, vous pouvez obtenir l'autorisation à partir de l'URL de rappel. L'URL de rappel est ajoutée aux paramètres du jeton d'accès et du jeton d'identification pour le flux implicite. Assurez-vous d'utiliser le bon type de jeton.
Pour obtenir des jetons d'autorisation à l'aide de l'interface utilisateur hébergée pour Amazon Cognito
Pour utiliser le ](https://developer.amazon.com/docs/login-with-amazon/authorization-code-grant.html)flux d'octroi du code d'autorisation[, procédez comme suit :
Remarque : Le paramètre du type de réponse doit être « code » lorsque vous utilisez le flux d'octroi de code d'autorisation.
1. Envoyez une demande GET pour obtenir un code d'autorisation :
Important : Remplacez example_domain par le nom de domaine de votre groupe d'utilisateurs. Remplacez example_app_client_id par l'ID client de l'application de votre groupe d'utilisateurs. Remplacez example_callback_url par votre URL de rappel.
https://example_domain/oauth2/authorize?response_type=code&client_id=example_app_client_id&redirect_uri=example_callback_url
Remarque : Incluez le paramètre identity_provider pour que le point de terminaison soit redirigé vers le fournisseur d'identité fédéré. Si le client de l'application est configuré uniquement pour les groupes d'utilisateurs Amazon Cognito, le point de terminaison suivant est redirigé vers le point de terminaison /login :
https://example_domain/login?response_type=code&client_id=example_app_client_id&redirect_uri=example_callback_url
2. Connectez-vous à votre groupe d'utilisateurs ou à votre fournisseur d'identité fédéré. L'interface utilisateur redirige vers l'URL spécifiée dans le rappel pour le client de l'application.
Important : L'URL de redirection inclut le code d'autorisation qui doit être échangé avec le point de terminaison du jeton pour obtenir des jetons valides.
3. Envoyez une requête POST au point de terminaison /oauth2/token pour échanger un code d'autorisation contre des jetons. Pour plus d'informations, consultez la section point de terminaison du jeton.
Exemple de requête POST pour échanger un code d'autorisation contre des jetons
Remarque : L'exemple de requête POST utilise le point de terminaison /oauth2/token suivant : https://example_domain.auth.us-east-1.amazoncognito.com/oauth2/token&
Content-Type='application/x-www-form-urlencoded'& Authorization=Basic ZXhhbXBsZTEyMzQ1Njc4OTA6enl4OTh3N3l2dHNycTY1NHBvMzIx grant_type=authorization_code& client_id=example1234567890& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect
Exemple de réponse à une requête POST
HTTP/1.1 200 OK Content-Type: application/json { "access_token":"abCde1example", "id_token":"abCde2example", "refresh_token":"abCde3example", "token_type":"Bearer", "expires_in":3600 }
Pour utiliser le flux de subventions implicites, procédez comme suit :
Remarque : Le paramètre du type de réponse doit être « jeton » lorsque vous utilisez le flux de subventions implicites.
1. Envoyez une requête GET pour obtenir une subvention implicite :
Important : Remplacez example_domain par le nom de domaine de votre groupe d'utilisateurs. Remplacez example_app_client_id par l'ID client de l'application de votre groupe d'utilisateurs. Remplacez example_callback_url par votre URL de rappel.
https://example_domain/oauth2/authorize?response_type=token&client_id=example_app_client_id&redirect_uri=example_callback_url
Remarque : Incluez le paramètre identity_provider pour que le point de terminaison soit redirigé vers le fournisseur d'identité fédéré. Si le client de l'application est configuré uniquement pour les groupes d'utilisateurs Amazon Cognito, le point de terminaison suivant est redirigé vers le point de terminaison /login :
https://example_domain/login?response_type=token&client_id=example_app_client_id&redirect_uri=example_callback_url
2. Connectez-vous à votre groupe d'utilisateurs avec le nom d'utilisateur et le mot de passe d'un utilisateur existant, ou créez un nouvel utilisateur pour vous connecter. L'interface utilisateur redirige vers l'URL spécifiée dans le rappel pour le client de l'application.
Remarque : L'URL de redirection inclut le jeton d'identification et le jeton d'accès.
Exemple d'URL de redirection
https://www.example.com/#id_token=123456789idtoken123456789&access_token=123456789accesstoken123456789expires_in=3600&token_type=Bearer
Pour obtenir des jetons d'autorisation à l'aide de l'AWS CLI
Remarque : Si des erreurs surviennent lors de l’exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d’AWS CLI.
Exécutez la commande initiate-auth de l'AWS CLI suivante pour obtenir des jetons d'autorisation :
Important : Remplacez example_user par votre nom d'utilisateur, example_password par votre mot de passe et example_app_client_id par l'ID client de votre application.
aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=example_user,PASSWORD=example_password --client_id example_app_client_id
Exemple de réponse à la commande initiate-auth de l'AWS CLI
{ "AuthenticationResult": { "AccessToken": "abCde1example", "IdToken": "abCde2example", "RefreshToken": "abCde3example", "TokenType": "Bearer", "ExpiresIn": 3600 }, "ChallengeParameters": {} }
Pour obtenir des jetons d'autorisation à l'aide de l'un des kits SDK AWS
Pour plus d'informations, consultez la section Intégration d'Amazon Cognito aux applications Web et mobiles.
Pour obtenir des jetons d'autorisation à l'aide de Postman
Utilisez le mode d'autorisation OAuth 2.0 dans Postman pour obtenir des jetons d'autorisation. Pour plus d'informations, consultez la section Pourquoi est-ce que je reçois des erreurs non autorisées dans API Gateway 401 après la création d'un autorisateur Lambda ?
Configurer les étendues personnalisées OAuth 2.0 dans les groupes d'utilisateurs Amazon Cognito et vérifier les étendues dans API Gateway
Un champ d'application fournit un niveau d'accès qu'une application peut demander à une ressource. Amazon Cognito possède des étendues OAuth intégrées qui peuvent être configurées pour autoriser un client d'application associé à un groupe d'utilisateurs. Pour plus d'informations sur les étendues intégrées dans Amazon Cognito, consultez la section Terminologie des paramètres du client de l'application.
Des étendues personnalisées peuvent être associées aux serveurs de ressources OAuth 2.0. Pour plus d'informations sur les serveurs de ressources, consultez la section Définition des serveurs de ressources pour votre groupe d'utilisateurs.
Lorsque vous utilisez Amazon Cognito avec API Gateway, l'outil d'autorisation Amazon Cognito authentifie la demande et sécurise les ressources. L'utilisation d'étendues personnalisées avec Amazon Cognito et API Gateway vous permet de fournir des niveaux d'accès différenciés à vos ressources d'API. Vous avez également plus de contrôle lorsque vous exposez des ressources pour obtenir des étendues de jetons d'accès.
Configurer un serveur de ressources et des étendues personnalisées OAuth 2.0 dans un groupe d'utilisateurs
1. Définissez le serveur de ressources et les étendues personnalisées pour votre groupe d'utilisateurs.
Pour l'identifiant du serveur de ressources, indiquez le point de terminaison HTTPS de la passerelle API où se trouvent vos ressources.
2. Si nécessaire, configurez un client d'application de pool d'utilisateurs, puis ajoutez les étendues personnalisées dans les paramètres du client d'applications.
Remarque : Un nom d'étendue personnalisé est formaté sous la forme resourceServerIdentifier/scopeName
Lorsqu'une application cliente demande une étendue personnalisée dans un flux OAuth 2.0, elle doit demander l'identifiant complet de l'étendue. Par exemple, si l'identifiant du serveur de ressources est https://myresourceserver.example.com et que le nom de l'étendue est resources.read, l'application cliente doit demander https://myresourceserver.example.com/resources.read lors de l'exécution.
Vérifiez les étendues personnalisées OAuth 2.0 dans API Gateway
1. Intégrez une API REST à un groupe d'utilisateurs Amazon Cognito.
2. Dans la console API Gateway, choisissez une API REST.
3. Dans le volet Ressources, choisissez un nom de méthode.
4. Choisissez la configuration de la demande de méthode.
5. Dans la liste déroulante Autorisation, choisissez Autorisateur Cognito. Cela ajoute automatiquement un nouveau champ nommé OAuth Scopes.
6. Dans le champ OAuth Scopes, entrez l'identifiant complet de l'étendue personnalisée au format indiqué précédemment. Par exemple, https://myresourceserver.example.com/resources.read.
7. Enregistrez et déployez l'API.
Testez la configuration à l'aide de Postman ou de CURL
1. Obtenez le jeton d'accès auprès du serveur d'autorisation Amazon Cognito à l'aide de l'un des flux OAuth 2.0 définis pour le client.
2. Envoyez le jeton d'accès que vous avez reçu en tant qu'en-tête d'autorisation dans une demande à API Gateway.
3. Si tout fonctionne correctement et qu'API Gateway valide et vérifie le jeton d'accès et l'étendue personnalisée, vous obtenez une réponse 200 OK.
Informations connexes
Comment puis-je décoder et vérifier la signature d'un jeton Web JSON Amazon Cognito ?
Contenus pertinents
- demandé il y a un anlg...
- demandé il y a 4 moislg...
- Réponse acceptéedemandé il y a 7 moislg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 7 mois
- AWS OFFICIELA mis à jour il y a un an