Comment autoriser l'accès aux API de la passerelle d’API à l'aide d'étendues personnalisées dans Amazon Cognito ?

Lecture de 6 minute(s)
0

Je souhaite autoriser l'accès à mes ressources d'API Amazon API Gateway en utilisant des étendues personnalisées dans un groupe d'utilisateurs Amazon Cognito.

Brève description

Définissez un serveur de ressources avec des étendues personnalisées dans votre groupe d'utilisateurs Amazon Cognito. Ensuite, créez et configurez un système d'autorisation Amazon Cognito pour l’API de votre API Gateway afin d'authentifier les demandes adressées à vos ressources d'API.

Si vous disposez de différents clients d'applications nécessitant différents niveaux d'accès à vos ressources d'API, vous pouvez définir des étendues d'accès différenciées. Déterminez les niveaux d'accès granulaire dont les différents clients d'applications peuvent avoir besoin, puis concevez en conséquence.

Résolution

Créez les prérequis suivants :

Ajoutez un serveur de ressources avec des étendues personnalisées dans votre groupe d'utilisateurs

1.    Ouvrez la console Amazon Cognito.

2.    Définissez le serveur de ressources et les étendues personnalisées.

3.    Après avoir créé le serveur de ressources, choisissez l'onglet Intégration des applications.

4.    Dans la section Clients d'applications et analyses, sélectionnez votre client d'application.

5.    Dans la section Interface utilisateur hébergée, choisissez Modifier. Procédez comme suit :
Pour la liste déroulante des types de subventions OAuth 2.0, choisissez Octroi implicite.
Dans la liste déroulante Étendues personnalisées, choisissez l'étendue personnalisée que vous avez définie.
Remarque : Le format d'une étendue personnalisée est ResourceServerIdentifier/scopeName. Lorsqu'un client demande une étendue personnalisée dans un flux OAuth 2.0, la demande doit inclure l'identifiant complet de l'étendue dans ce format.

6.    Choisissez Enregistrer les modifications.

Si vos applications mobiles comportent un composant côté serveur, utilisez le flux d'octroi du code d'autorisation et la clé de preuve pour l'échange de code (PKCE). Grâce au flux d'octroi du code d'autorisation, les jetons sont plus sécurisés et ne sont jamais exposés directement à un utilisateur final.

Si votre configuration ne contient aucune logique côté serveur, vous pouvez utiliser le flux de subventions implicite. La subvention implicite ne génère pas de jetons d'actualisation. Cela évite que les jetons d'actualisation ne soient exposés au client. Les jetons d'actualisation ont une durée de validité plus longue et permettent de récupérer des identifiants et des jetons d'accès plus récents.

Important : Ne stockez pas les jetons d'actualisation dans un environnement côté client.

Pour plus d'informations, consultez la section Terminologie des paramètres du client d'application. Pour plus d'informations sur les subventions OAuth 2.0 pour le pool d'utilisateurs Amazon Cognito, consultez la section Comprendre les subventions OAuth 2.0 pour le pool d'utilisateurs Amazon Cognito.

Créez un autorisateur et intégrez-le à votre API

Pour effectuer les étapes suivantes, suivez les instructions pour intégrer une API REST à un groupe d'utilisateurs Amazon Cognito.

1.    Pour créer l'autorisateur, suivez les instructions de la section Pour créer un autorisateur COGNITO_USER_POOLS à l'aide de la console API Gateway.
Remarque : Après la création, une option apparaît dans la console pour Tester votre autorisateur. Cela nécessite un jeton d'identité. Pour utiliser un jeton d'accès afin de tester votre configuration en dehors de la console, consultez la section Obtenir un jeton d'accès au pool d'utilisateurs à des fins de test de cet article.

2.    Pour intégrer l'autorisateur à votre API, suivez les instructions de la section ** Pour configurer un autorisateur COGNITO_USER_POOLS sur les méthodes**.
Remarque : Pour les étendues OAuth, entrez l'identifiant complet d'une étendue personnalisée au format resourceServerIdentifier/scopeName.

3.    Déployez votre API.

Obtenir un jeton d'accès au pool d'utilisateurs à des fins de test

Utilisez l'interface utilisateur Web hébergée de votre groupe d'utilisateurs pour vous connecter et récupérer un jeton d'accès depuis le serveur d'autorisation Amazon Cognito. Vous pouvez également utiliser les implémentations de point de terminaison OAuth 2.0 disponibles dans les kits SDK AWS mobiles et Web pour récupérer un jeton d'accès.

Remarque : Lorsqu'un client d'application demande une authentification via l'interface utilisateur Web hébergée, la demande peut inclure n'importe quelle combinaison d'[étendues réservées au système ou d'étendues personnalisées](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html). Si le client ne demande aucune étendue, le serveur d'authentification renvoie un jeton d'accès qui contient toutes les étendues associées au client. Lorsque vous concevez votre client d'application, assurez-vous que le client inclut les étendues prévues dans la demande afin d'éviter d'accorder des autorisations inutiles.

1.    Entrez l'URL suivante dans votre navigateur Web :
https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
Remarque : Remplacez yourDomainPrefix et region par les valeurs de votre groupe d'utilisateurs. Trouvez-les dans la console Amazon Cognito sous l'onglet Nom de domaine de votre groupe d'utilisateurs.
Remplacez yourClientId par l'ID de votre client d'application et remplacez redirectUrl par l'URL de rappel de votre client d'application. Retrouvez-les dans la console sous l'onglet Paramètres du client de l'application pour votre groupe d'utilisateurs. Pour plus d'informations, consultez la section Point de terminaison.

2.    Connectez-vous à votre groupe d'utilisateurs en tant qu'utilisateur que vous avez créé.

3.    Copiez le jeton d'accès à partir de l'URL de la barre d'adresse. Le jeton est une longue chaîne de caractères suivant access_token=.

Appelez votre API à titre de test

À titre de test, utilisez le jeton d'accès comme valeur de l'en-tête d'autorisation pour appeler votre API à l'aide du jeton d'accès. Vous pouvez utiliser l'application Postman (sur le site Web de Postman) ou la commande curl à partir d'une interface de ligne de commande. Pour plus d'informations sur curl, consultez le site Web du projet curl.

Pour utiliser curl, exécutez la commande suivante :

curl https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName -H "Authorization: accessToken"

Remarque : Remplacez restApiId par l'ID de l'API. Remplacez la région par la région AWS de votre API. Remplacez stageName par le nom du stage sur lequel votre API est déployée. Remplacez resourceName par le nom de la ressource d'API. Remplacez accessToken par le jeton que vous avez copié. Pour plus d'informations, consultez la section Invocation d'une API REST dans Amazon API Gateway.

Lorsque vous configurez correctement tout, vous obtenez un code de réponse 200 OK.

Informations connexes

Configuration d'un client d'application de pool d'utilisateurs

Étendue du jeton d'accès (Le cadre d'autorisation OAuth 2.0)

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an