

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Contrôlez l'accès à REST APIs en utilisant les groupes d'utilisateurs Amazon Cognito comme autorisateur
<a name="apigateway-integrate-with-cognito"></a>

Au lieu d’utiliser des [rôles et politiques IAM](permissions.md) ou des [mécanismes d’autorisation Lambda](apigateway-use-lambda-authorizer.md) (anciennement appelés mécanismes d’autorisation personnalisée), vous pouvez utiliser un [groupe d’utilisateurs Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) pour contrôler les personnes pouvant accéder à votre API dans Amazon API Gateway. 

Pour utiliser un groupe d’utilisateurs Amazon Cognito avec votre API, vous devez d’abord créer un mécanisme d’autorisation de type `COGNITO_USER_POOLS`, puis configurer une méthode d’API permettant d’utiliser ce mécanisme d’autorisation. Une fois l’API déployée, le client doit d’abord connecter l’utilisateur au groupe d’utilisateurs, obtenir une [identité ou un jeton d’accès](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) pour l’utilisateur, puis appeler la méthode API avec l’un des jetons, qui sont généralement définis sur l’en-tête `Authorization` de la demande. L’appel d’API réussit uniquement si le jeton requis est fourni et qu’il est valide. Dans le cas contraire, le client n’est pas autorisé à effectuer l’appel, il ne dispose pas des informations d’identification qui peuvent être autorisées. 

Le jeton d’identité est utilisé pour autoriser les appels d’API en fonction des requêtes d’identité de l’utilisateur connecté. Le jeton d’accès est utilisé pour autoriser les appels d’API en fonction des règles personnalisées des ressources protégées par un accès spécifié. Pour plus d’informations, consultez [Utilisation des jetons avec les groupes d’utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) et [Serveur de ressources et portées personnalisées](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html).

Pour créer et configurer un groupe d’utilisateurs Amazon Cognito pour votre API, exécutez les tâches suivantes :
+ Utilisez la console Amazon Cognito, le CLI/SDK ou l'API pour créer un groupe d'utilisateurs, ou utilisez-en un appartenant à un autre compte. AWS 
+ Utilisez la console API Gateway, l’interface de ligne de commande/le kit SDK, ou encore l’API pour créer un mécanisme d’autorisation API Gateway avec le groupe d’utilisateurs choisi.
+ Utilisez la console API Gateway, l’interface de ligne de commande/le kit SDK, ou encore l’API pour activer le mécanisme d’autorisation sur les méthodes d’API sélectionnées.

 Pour appeler des méthodes d’API avec un groupe d’utilisateurs activé, vos clients d’API effectuent les tâches suivantes :
+  Utilisez Amazon Cognito CLI/SDK ou l'API pour connecter un utilisateur au groupe d'utilisateurs choisi et obtenir un jeton d'identité ou un jeton d'accès. Pour en savoir plus sur l'utilisation du SDKs, consultez les [exemples de code pour Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/service_code_examples.html). AWS SDKs
+  Utilisez un cadre spécifique au client pour appeler l’API API Gateway déployée et fournir le jeton approprié dans l’en-tête `Authorization`.

En tant que développeur d’API, vous devez fournir à vos développeurs clients l’ID du groupe d’utilisateurs, un ID client et éventuellement les secrets client associés, qui sont définis dans le cadre groupe d’utilisateurs. 

**Note**  
Pour permettre à un utilisateur de se connecter avec les informations d’identification Amazon Cognito et d’obtenir également des informations d’identification temporaires à utiliser avec les autorisations d’un rôle IAM, utilisez les [identités fédérées Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html). Pour chaque méthode HTTP du point de terminaison de ressources d’API, définissez le type d’autorisation, la catégorie `Method Execution`, sur `AWS_IAM`. 

Dans cette section, nous allons expliquer comment créer un groupe d’utilisateurs, intégrer une API API Gateway avec le groupe d’utilisateurs et appeler une API intégrée au groupe d’utilisateurs. 

**Topics**
+ [

# Création d’un groupe d’utilisateurs Amazon Cognito pour une API REST
](apigateway-create-cognito-user-pool.md)
+ [

# Intégration d’une API REST avec un groupe d’utilisateurs Amazon Cognito
](apigateway-enable-cognito-user-pool.md)
+ [

# Appel d’une API REST intégrée avec un groupe d’utilisateurs Amazon Cognito
](apigateway-invoke-api-integrated-with-cognito-user-pool.md)
+ [

# Configuration d’un mécanisme d’autorisation Amazon Cognito entre comptes pour une API REST à l’aide de la console API Gateway
](apigateway-cross-account-cognito-authorizer.md)
+ [

# Créez un autorisateur Amazon Cognito pour une API REST à l'aide de CloudFormation
](apigateway-cognito-authorizer-cfn.md)

# Création d’un groupe d’utilisateurs Amazon Cognito pour une API REST
<a name="apigateway-create-cognito-user-pool"></a>

Avant d’intégrer votre API avec un groupe d’utilisateurs, vous devez créer ce groupe d’utilisateurs dans Amazon Cognito. La configuration de votre groupe d’utilisateurs doit respecter tous les [quotas de ressources pour Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html). Toutes les variables Amazon Cognito définies par l’utilisateur, telles que les groupes, les utilisateurs et les rôles doivent utiliser uniquement des caractères alphanumériques. Pour obtenir des instructions afin de créer un groupe d’utilisateurs, consultez [Didacticiel : création d’un groupe d’utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html) dans le *Guide du développeur Amazon Cognito*.

Notez l’ID du groupe d’utilisateurs, l’ID du client et les codes secrets du client. Le client doit fournir ces informations à Amazon Cognito pour permettre à l’utilisateur de s’inscrire dans le groupe d’utilisateurs, de se connecter au groupe d’utilisateurs et d’obtenir un jeton d’identité ou d’accès à inclure dans les demandes pour appeler les méthodes d’API configurées avec le groupe d’utilisateurs. Vous devez également spécifier le nom du groupe d’utilisateurs lorsque vous le configurez en tant que mécanisme d’autorisation dans API Gateway, comme décrit dans la section suivante.

Si vous utilisez des jetons d'accès pour autoriser des appels de méthode d'API, assurez-vous de configurer l'intégration de l'application avec le groupe d'utilisateurs pour configurer les règles personnalisées de votre choix sur un serveur de ressources donné. Pour plus d’informations sur l’utilisation de jetons avec des groupes d’utilisateurs Amazon Cognito, consultez [Utilisation des jetons avec les groupes d’utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html). Pour plus d’informations sur les serveurs de ressources, consultez [Définition des serveurs de ressources pour votre groupe d’utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html).

Notez les identificateurs du serveur de ressources configurés et les noms de règles personnalisées. Vous en avez besoin pour créer les noms complets des étendues d'accès pour **OAuth les étendues**, qui sont utilisés par l'`COGNITO_USER_POOLS`autorisateur. 

![\[Serveurs de ressources et règles de groupes d’utilisateurs Amazon Cognito\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/cognito-user-pool-custom-scopes-new-console.png)


# Intégration d’une API REST avec un groupe d’utilisateurs Amazon Cognito
<a name="apigateway-enable-cognito-user-pool"></a>

Après avoir créé un groupe d’utilisateurs Amazon Cognito, dans API Gateway, vous devez ensuite créer un mécanisme d’autorisation `COGNITO_USER_POOLS` qui utilise le groupe d’utilisateurs. La procédure suivante montre comment procéder à l’aide de la console API Gateway.

**Note**  
Vous pouvez utiliser l’action [https://docs.aws.amazon.com/apigateway/latest/api/API_CreateAuthorizer.html](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateAuthorizer.html) pour créer un mécanisme d’autorisation `COGNITO_USER_POOLS` qui utilise plusieurs groupes d’utilisateurs. Vous pouvez utiliser jusqu’à 1 000 groupes d’utilisateurs pour un mécanisme d’autorisation `COGNITO_USER_POOLS`. Cette limite ne peut pas être augmentée.

**Important**  
Après avoir effectué l’une des procédures ci-dessous, vous devez déployer ou redéployer votre API pour propager les modifications. Pour plus d’informations sur le déploiement de votre API, consultez [Déploiement d’une API REST dans API Gateway](how-to-deploy-api.md).

**Pour créer un mécanisme d’autorisation `COGNITO_USER_POOLS` à l’aide de la console API Gateway**

1. Créez une API ou sélectionnez une API existante dans API Gateway.

1. Dans le panneau de navigation principal, choisissez **Mécanismes d'autorisation**.

1. Choisissez **Créer un mécanisme d'autorisation**. 

1. Pour configurer le nouveau mécanisme d'autorisation afin d'utiliser un groupe d'utilisateurs, procédez comme suit :

   1.  Pour **Nom du mécanisme d’autorisation**, entrez un nom. 

   1. Pour **Type de mécanisme d'autorisation**, sélectionnez **Cognito**.

   1. Pour le **groupe d'utilisateurs Cognito,** choisissez l' Région AWS endroit où vous avez créé votre Amazon Cognito et sélectionnez un groupe d'utilisateurs disponible.

      Vous pouvez utiliser une variable d’étape pour définir votre groupe d’utilisateurs. Utilisez le format suivant pour votre groupe d’utilisateurs : `arn:aws:cognito-idp:us-east-2:111122223333:userpool/${stageVariables.MyUserPool}`.

   1.  Pour **Source du jeton**, entrez **Authorization** comme nom d'en-tête pour transmettre le jeton d'identité ou le jeton d'accès renvoyé par Amazon Cognito lorsqu'un utilisateur se connecte avec succès. 

   1. (Facultatif) Entrez une expression régulière dans le champ **Validation du jeton** pour valider le champ `aud` (public) du jeton d’identité avant que la demande soit autorisée avec Amazon Cognito. Notez que lors de l'utilisation d'un jeton d'accès, cette validation rejette la demande en raison du jeton d'accès ne contenant pas le champ `aud`.

   1. Choisissez **Créer un mécanisme d'autorisation**. 

1. Après avoir créé le mécanisme d’autorisation `COGNITO_USER_POOLS`, vous pouvez essayer de l’invoquer en fournissant un jeton d’identité alloué à partir du groupe d’utilisateurs. Vous ne pouvez pas utiliser de jeton d’accès pour essayer d’invoquer votre mécanisme d’autorisation.

   Vous pouvez obtenir ce jeton d’identité en appelant le [kit SDK d’identité Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-integrate-apps.html) afin de connecter l’utilisateur. Vous pouvez également utiliser l’action [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html). Si vous ne configurez pas de **Portées d’autorisation**, API Gateway traite le jeton fourni comme un jeton d’identité. 

La procédure précédente crée un mécanisme d’autorisation `COGNITO_USER_POOLS` qui utilise le groupe d’utilisateurs Amazon Cognito que vous venez de créer. En fonction de la façon dont vous activez le mécanisme d’autorisation sur une méthode d’API, vous pouvez utiliser un jeton d’identité ou un jeton d’accès qui est alloué à partir du groupe d’utilisateurs intégré.

**Pour configurer un mécanisme d’autorisation `COGNITO_USER_POOLS` sur les méthodes**

1. Sélectionnez **Ressources**. Choisissez une nouvelle méthode ou choisissez une méthode existante. Si nécessaire, créez une ressource.

1. Dans l'onglet **Demande de méthode**, sous **Paramètres de demande de méthode**, choisissez **Modifier**.

1. Pour **Mécanisme d’autorisation**, dans le menu déroulant, sélectionnez les **mécanismes d’autorisation de groupe d’utilisateurs Amazon Cognito** que vous venez de créer.

1.  Pour utiliser un jeton d’identité, procédez comme suit :

   1. Laissez l’option **Portées d’autorisation** vide.

   1. Si nécessaire, dans **Demande d’intégration**, ajoutez les expressions `$context.authorizer.claims['property-name']` ou `$context.authorizer.claims.property-name` dans un modèle de mappage de corps pour transmettre la propriété des champs standard d’identité spécifiée du groupe d’utilisateurs au backend. Pour les noms de propriété simples, tels que `sub` ou `custom-sub`, les deux notations sont identiques. Pour les noms de propriété complexes, tels que `custom:role`, vous ne pouvez pas utiliser la notation par points. Par exemple, les expressions de mappage suivantes transmettent les [champs standard](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) `sub` et `email` de la requête au backend :

      ```
      {
      	"context" : {
      		"sub" : "$context.authorizer.claims.sub",
      		"email" : "$context.authorizer.claims.email"
      	}
      }
      ```

      Si vous avez déclaré un champ de requête personnalisé lors de la configuration d’un groupe d’utilisateurs, vous pouvez respecter le même modèle pour accéder aux champs personnalisés. L’exemple suivant permet d’obtenir un champ `role` personnalisé d’une requête :

      ```
      {
      	"context" : {
      		"role" : "$context.authorizer.claims.role"
          }
      }
      ```

      Si le champ de requête personnalisé est déclaré en tant que `custom:role`, utilisez l’exemple suivant pour obtenir la propriété de la requête :

      ```
      {
      	"context" : {
      		"role" : "$context.authorizer.claims['custom:role']"
          }
      }
      ```

1.  Pour utiliser un jeton d’accès, procédez comme suit : 

   1. Pour **Portées d’autorisation**, entrez un ou plusieurs noms complets d’une portée qui a été configurée lorsque le groupe d’utilisateurs Amazon Cognito a été créé. Par exemple, en suivant l’exemple fourni dans [Création d’un groupe d’utilisateurs Amazon Cognito pour une API REST](apigateway-create-cognito-user-pool.md), l’une des portées est `https://my-petstore-api.example.com/cats.read`. 

      Lors de l’exécution, l’appel de méthode réussit si une portée indiquée sur la méthode de cette étape correspond à une portée demandée dans le jeton entrant. Dans le cas contraire, l’appel échoue en renvoyant une réponse `401 Unauthorized`.

   1.  Choisissez **Enregistrer**.

1. Répétez ces étapes pour les autres méthodes de votre choix.

Avec l'`COGNITO_USER_POOLS`autorisateur, si l'option **OAuthScopes** n'est pas spécifiée, API Gateway traite le jeton fourni comme un jeton d'identité et vérifie l'identité revendiquée par rapport à celle du groupe d'utilisateurs. Sinon, API Gateway traite le jeton fourni comme un jeton d’accès et vérifie les portées d’accès qui sont demandées dans le jeton par rapport aux portées d’autorisation déclarées sur la méthode.

Au lieu d’utiliser la console API Gateway, vous pouvez également activer un groupe d’utilisateurs Amazon Cognito sur une méthode en spécifiant un fichier de définition OpenAPI et en important la définition d’API dans API Gateway.

**Pour importer un mécanisme d’autorisation COGNITO\$1USER\$1POOLS avec un fichier de définition OpenAPI**

1. Créez (ou exportez) un fichier de définition OpenAPI pour votre API.

1. Spécifiez la définition JSON du mécanisme d’autorisation `COGNITO_USER_POOLS` (`MyUserPool`) dans la section `securitySchemes` dans OpenAPI 3.0 ou dans la section `securityDefinitions` dans OpenAPI 2.0 comme suit :

------
#### [ OpenAPI 3.0 ]

   ```
     "securitySchemes": {
       "MyUserPool": {
         "type": "apiKey",
         "name": "Authorization",
         "in": "header",
         "x-amazon-apigateway-authtype": "cognito_user_pools",
         "x-amazon-apigateway-authorizer": {
           "type": "cognito_user_pools",
           "providerARNs": [
             "arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}"
           ]
         }
       }
   ```

------
#### [ OpenAPI 2.0 ]

   ```
     "securityDefinitions": {
       "MyUserPool": {
         "type": "apiKey",
         "name": "Authorization",
         "in": "header",
         "x-amazon-apigateway-authtype": "cognito_user_pools",
         "x-amazon-apigateway-authorizer": {
           "type": "cognito_user_pools",
           "providerARNs": [
             "arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}"
           ]
         }
       }
   ```

------

1. Pour utiliser le jeton d’identité pour l’autorisation de méthode, ajoutez `{ "MyUserPool": [] }` à la définition `security` de la méthode, comme indiqué dans la méthode GET suivante sur la ressource racine.

   ```
     "paths": {
       "/": {
         "get": {
           "consumes": [
             "application/json"
           ],
           "produces": [
             "text/html"
           ],
           "responses": {
             "200": {
               "description": "200 response",
               "headers": {
                 "Content-Type": {
                   "type": "string"
                 }
               }
             }
           },
           "security": [
             {
               "MyUserPool": []
             }
           ],        
           "x-amazon-apigateway-integration": {
             "type": "mock",
             "responses": {
               "default": {
                 "statusCode": "200",
                 "responseParameters": {
                   "method.response.header.Content-Type": "'text/html'"
                 },
               }
             },
             "requestTemplates": {
               "application/json": "{\"statusCode\": 200}"
             },
             "passthroughBehavior": "when_no_match"
           }
         },
         ...
      }
   ```

1.  Pour utiliser le jeton d’accès pour l’autorisation de méthode, modifiez la définition de sécurité ci-dessus pour `{ "MyUserPool": [resource-server/scope, ...] }`:

   ```
     "paths": {
       "/": {
         "get": {
           "consumes": [
             "application/json"
           ],
           "produces": [
             "text/html"
           ],
           "responses": {
             "200": {
               "description": "200 response",
               "headers": {
                 "Content-Type": {
                   "type": "string"
                 }
               }
             }
           },
           "security": [
             {
               "MyUserPool": ["https://my-petstore-api.example.com/cats.read", "http://my.resource.com/file.read"]
             }
           ],        
           "x-amazon-apigateway-integration": {
             "type": "mock",
             "responses": {
               "default": {
                 "statusCode": "200",
                 "responseParameters": {
                   "method.response.header.Content-Type": "'text/html'"
                 },
               }
             },
             "requestTemplates": {
               "application/json": "{\"statusCode\": 200}"
             },
             "passthroughBehavior": "when_no_match"
           }
         },
         ...
      }
   ```

1. Si nécessaire, vous pouvez définir d’autres paramètres de configuration d’API à l’aide des définitions ou des extensions OpenAPI appropriées. Pour de plus amples informations, veuillez consulter [Extensions OpenAPI pour API Gateway](api-gateway-swagger-extensions.md).

# Appel d’une API REST intégrée avec un groupe d’utilisateurs Amazon Cognito
<a name="apigateway-invoke-api-integrated-with-cognito-user-pool"></a>

Pour appeler une méthode pour laquelle un mécanisme d’autorisation de groupe d’utilisateurs est configuré, le client doit effectuer les opérations suivantes : 
+ Autoriser l’utilisateur à s’inscrire dans le groupe d’utilisateurs.
+ Autoriser l’utilisateur à se connecter au groupe d’utilisateurs.
+ Obtenez un [jeton d’identité ou d’accès](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) de l’utilisateur connecté à partir du groupe d’utilisateurs.
+ Inclure le jeton dans l’en-tête `Authorization` (ou tout autre en-tête vous avez spécifié lors de la création du mécanisme d’autorisation).

Vous pouvez utiliser [AWS Amplify]() pour effectuer ces tâches. Pour plus d’informations, consultez [Intégration d’Amazon Cognito avec des applications Web et mobiles](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-integrate-apps.html).
+ Pour Android, consultez [Mise en route avec Amplify pour Android](https://docs.amplify.aws/android/build-a-backend/auth/).
+ Pour utiliser iOS, consultez [Mise en route avec Amplify pour iOS](https://docs.amplify.aws/swift/build-a-backend/auth/).
+ Pour l'utiliser JavaScript, consultez [Getting Started with Amplify pour Javascript](https://docs.amplify.aws/javascript/build-a-backend/auth/).

# Configuration d’un mécanisme d’autorisation Amazon Cognito entre comptes pour une API REST à l’aide de la console API Gateway
<a name="apigateway-cross-account-cognito-authorizer"></a>

Vous pouvez désormais également utiliser un groupe d'utilisateurs Amazon Cognito d'un autre AWS compte comme autorisateur d'API. Le groupe d'utilisateurs Amazon Cognito peut utiliser des stratégies d'authentification par jeton porteur, telles que OAuth le protocole SAML. Il est ainsi facile de gérer et de partager de manière centralisée un autorisateur de groupe d'utilisateurs Amazon Cognito central sur plusieurs API Gateway. APIs

Dans cette section, nous montrons comment configurer un groupe d’utilisateurs Amazon Cognito entre comptes à l’aide de la console Amazon API Gateway.

Ces instructions supposent que vous disposez déjà d'une API API Gateway sur un AWS compte et d'un groupe d'utilisateurs Amazon Cognito sur un autre compte.

## Création d’un mécanisme d’autorisation Amazon Cognito entre comptes pour une API REST
<a name="apigateway-configure-cross-account-cognito-authorizer"></a>

Connectez-vous à la console Amazon API Gateway dans le compte qui contient votre API, puis procédez comme suit :

1. Créez une API ou sélectionnez une API existante dans API Gateway.

1. Dans le panneau de navigation principal, choisissez **Mécanismes d'autorisation**.

1. Choisissez **Créer un mécanisme d'autorisation**.

1. Pour configurer le nouveau mécanisme d'autorisation afin d'utiliser un groupe d'utilisateurs, procédez comme suit :

   1.  Pour **Nom du mécanisme d’autorisation**, entrez un nom. 

   1. Pour **Type de mécanisme d'autorisation**, sélectionnez **Cognito**.

   1. Pour **Groupe d’utilisateurs Cognito**, entrez l’ARN complet du groupe d’utilisateurs que vous avez dans votre deuxième compte.
**Note**  
Dans la console Amazon Cognito, vous pouvez trouver l’ARN de votre groupe d’utilisateurs dans le champ **Pool ARN (ARN du groupe)** du volet **General Settings (Paramètres généraux)**.

   1.  Pour **Source du jeton**, entrez **Authorization** comme nom d'en-tête pour transmettre le jeton d'identité ou le jeton d'accès renvoyé par Amazon Cognito lorsqu'un utilisateur se connecte avec succès. 

   1. (Facultatif) Entrez une expression régulière dans le champ **Validation du jeton** pour valider le champ `aud` (public) du jeton d’identité avant que la demande soit autorisée avec Amazon Cognito. Notez que lors de l'utilisation d'un jeton d'accès, cette validation rejette la demande en raison du jeton d'accès ne contenant pas le champ `aud`.

   1. Choisissez **Créer un mécanisme d'autorisation**.

# Créez un autorisateur Amazon Cognito pour une API REST à l'aide de CloudFormation
<a name="apigateway-cognito-authorizer-cfn"></a>

Vous pouvez l'utiliser CloudFormation pour créer un groupe d'utilisateurs Amazon Cognito et un autorisateur Amazon Cognito. L'exemple de CloudFormation modèle effectue les opérations suivantes : 
+ Créez un groupe d’utilisateurs Amazon Cognito. Un client doit d’abord connecter l’utilisateur à un groupe d’utilisateurs et obtenir un [jeton d’identité ou d’accès](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html). Si vous utilisez des jetons d'accès pour autoriser des appels de méthode d'API, assurez-vous de configurer l'intégration de l'application avec le groupe d'utilisateurs pour configurer les règles personnalisées de votre choix sur un serveur de ressources donné.
+ Il crée une API API Gateway avec une méthode `GET`.
+ Crée un mécanisme d’autorisation Amazon Cognito qui utilise l’en-tête `Authorization` comme source du jeton.

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  UserPool:
    Type: AWS::Cognito::UserPool
    Properties:
      AccountRecoverySetting:
        RecoveryMechanisms:
          - Name: verified_phone_number
            Priority: 1
          - Name: verified_email
            Priority: 2
      AdminCreateUserConfig:
        AllowAdminCreateUserOnly: true
      EmailVerificationMessage: The verification code to your new account is {####}
      EmailVerificationSubject: Verify your new account
      SmsVerificationMessage: The verification code to your new account is {####}
      VerificationMessageTemplate:
        DefaultEmailOption: CONFIRM_WITH_CODE
        EmailMessage: The verification code to your new account is {####}
        EmailSubject: Verify your new account
        SmsMessage: The verification code to your new account is {####}
    UpdateReplacePolicy: Retain
    DeletionPolicy: Retain
  CogAuthorizer:
    Type: AWS::ApiGateway::Authorizer
    Properties:
      Name: CognitoAuthorizer
      RestApiId:
        Ref: Api
      Type: COGNITO_USER_POOLS
      IdentitySource: method.request.header.Authorization
      ProviderARNs:
        - Fn::GetAtt:
            - UserPool
            - Arn
  Api:
    Type: AWS::ApiGateway::RestApi
    Properties:
      Name: MyCogAuthApi
  ApiDeployment:
    Type: AWS::ApiGateway::Deployment
    Properties:
      RestApiId:
        Ref: Api
    DependsOn:
      - CogAuthorizer
      - ApiGET
  ApiDeploymentStageprod:
    Type: AWS::ApiGateway::Stage
    Properties:
      RestApiId:
        Ref: Api
      DeploymentId:
        Ref: ApiDeployment
      StageName: prod
  ApiGET:
    Type: AWS::ApiGateway::Method
    Properties:
      HttpMethod: GET
      ResourceId:
        Fn::GetAtt:
          - Api
          - RootResourceId
      RestApiId:
        Ref: Api
      AuthorizationType: COGNITO_USER_POOLS
      AuthorizerId:
        Ref: CogAuthorizer
      Integration:
        IntegrationHttpMethod: GET
        Type: HTTP_PROXY
        Uri: http://petstore-demo-endpoint.execute-api.com/petstore/pets
Outputs:
  ApiEndpoint:
    Value:
      Fn::Join:
        - ""
        - - https://
          - Ref: Api
          - .execute-api.
          - Ref: AWS::Region
          - "."
          - Ref: AWS::URLSuffix
          - /
          - Ref: ApiDeploymentStageprod
          - /
```