Comment autoriser l'accès aux API Amazon API Gateway à l'aide de portées personnalisées dans Amazon Cognito ?

Dernière mise à jour : 25/09/2020

Je souhaite autoriser l'accès à mes ressources d'API Amazon API Gateway à l'aide de portées personnalisées dans un groupe d'utilisateurs Amazon Cognito. Comment procéder ?

Brève description

Définissez un serveur de ressources avec des règles personnalisées dans votre groupe d'utilisateurs Amazon Cognito. Créez et configurez ensuite un mécanisme d'autorisation Amazon Cognito pour votre API Amazon API Gateway pour authentifier les demandes auprès de vos ressources d'API.

Si vous avez différents clients d'application avec différents niveaux d'accès à vos ressources d'API, vous pouvez fournir un accès différent en fonction des règles personnalisées que vous définissez. Prenez en compte les niveaux d'accès granulaire dont les différents clients d'application peuvent avoir besoin, puis concevez-les en conséquence.

Résolution

Ajouter un serveur de ressources avec des règles personnalisées dans votre groupe d'utilisateurs

  1. Ouvrez la console Amazon Cognito.
  2. Définissez le serveur de ressources et les règles personnalisées.
  3. Après avoir enregistré vos modifications, dans l'onglet Resource servers (Serveurs de ressources), sélectionnez Configure app client settings (Configurer les paramètres du client d'application).
  4. Dans l'onglet App client settings (Paramètres du client d'application), sous OAuth 2.0, procédez comme suit :
    Sous Allower OAuth Flows (Flux OAuth autorisés), cochez la case Implicit grant (Autorisation implicite).
    Sous Allowed Custom Scopes (Règles personnalisées autorisées), cochez la case correspondant à la règle personnalisée que vous avez définie.
    Remarque : notez que le format d'une règle personnalisée est resourceServerIdentifier/scopeName. Lorsqu'un client demande une règle personnalisée dans un flux OAuth 2.0, la demande doit inclure l'identifiant complet de la règle dans ce format.
  5. Sélectionnez Enregistrer les modifications.

Si vos applications mobiles ont un composant côté serveur, utilisez le flux Authorization code grant (Octroi du code d'autorisation) et la clé Proof Key for Code Exchange (PKCE). Avec le flux Authorization code grant, les jetons ne sont jamais exposés directement à un utilisateur final, et ils sont moins susceptibles d'être exposés.

Si votre configuration ne contient aucune logique côté serveur, vous pouvez utiliser le flux Implicit grant (Autorisation implicite). Le flux Implicit grant ne génère pas de jetons d'actualisation, vous aidant ainsi à empêcher les jetons d'actualisation d'être exposés au client. Les jetons d'actualisation ont une validité plus longue et sont utilisés pour récupérer des jetons d'ID et 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 Présentation des paramètres du client d'application. Pour plus d'informations sur les autorisations OAuth 2.0 du groupe d'utilisateurs, consultez Understanding Amazon Cognito user pool OAuth 2.0 grants.

Créer un mécanisme d'autorisation et l'intégrer à votre API

Pour compléter ces étapes, suivez les instructions de la section Intégrer une API REST à un groupe d'utilisateurs Amazon Cognito.

  1. Pour créer le mécanisme d'autorisation, suivez les instructions sous Pour créer un mécanisme d'autorisation COGNITO_USER_POOLS à l'aide de la console API Gateway.
    Remarque : après la création de votre mécanisme d'autorisation, il existe une option dans la console pour tester celui-ci. Cette opération nécessite un jeton d'identité. Pour tester votre configuration en dehors de la console à l'aide d'un jeton d'accès, consultez la section Obtenir un jeton d'accès de groupe d'utilisateurs à des fins de test plus loin dans cet article.
  2. Pour intégrer le mécanisme d'autorisation à votre API, suivez les instructions sous Pour configurer un mécanisme d'autorisation COGNITO_USER_POOLS sur les méthodes.
    Remarque : pour OAuth Scopes (Règles OAuth), saisissez l'identifiant complet d'une règle personnalisée au format resourceServerIdentifier/scopeName.
  3. Déployez votre API.

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

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

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 de portées réservées par le système, ou de portées personnalisées que vous définissez dans le serveur de ressources. Si le client ne demande aucune portée, le serveur d'authentification renvoie un jeton d'accès qui contient toutes les portées associées au client. Lorsque vous concevez votre client d'application, veillez à ce qu'il inclue les portées prévues dans la demande afin d'éviter d'accorder des autorisations inutiles.

  1. Saisissez cette URL 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. Recherchez-les dans la console Amazon Cognito, sous l'onglet Nom de domaine de votre groupe d'utilisateurs.
    Remplacez yourClientId par l'identifiant de votre client d'application et remplacez redirectUrl par l'URL de retour de votre client d'application. Recherchez-les dans la console, sous l'onglet Paramètres du client d'application correspondant à votre groupe d'utilisateurs. Pour plus d'informations, consultez Point de terminaison LOGIN.
  2. Connectez-vous à votre groupe d'utilisateurs sous le compte utilisateur que vous avez créé.
  3. Copiez le jeton d'accès à partir de l'URL dans 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, appelez votre API à l'aide du jeton d'accès comme valeur de l'en-tête d'autorisation. Vous pouvez utiliser l'application Postman ou 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 d'API. Remplacez region par la région AWS de votre API. Remplacez stageName par le nom de l'étape dans laquelle 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.

Si tout est correctement configuré, vous obtenez un code de réponse 200 OK.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?