

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.

# Configuration d'un serveur d'autorisation externe
<a name="ext-auth"></a>

Le serveur d'autorisation est le serveur chargé d'authentifier et d'autoriser le client SDKs et les agents.

Par défaut, le gestionnaire de session utilise le courtier comme serveur d'autorisation pour générer des jetons d'accès OAuth 2.0 pour les instructions client SDKs et logicielle pour les agents. Si vous utilisez le Broker comme serveur d'autorisation, aucune configuration supplémentaire n'est requise.

Vous pouvez configurer le gestionnaire de session pour utiliser Amazon Cognito comme serveur d'autorisation externe au lieu du Broker. Pour plus d'informations sur Amazon Cognito, consultez le guide du développeur [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html).

**Pour utiliser Amazon Cognito comme serveur d'autorisation**

1. Créez un nouveau groupe d'utilisateurs Amazon Cognito. Pour plus d'informations sur les groupes d'utilisateurs, consultez la section [Fonctionnalités d'Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html#feature-overview) dans le guide du développeur *Amazon Cognito*.

   Utilisez la [create-user-pool](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool.html)commande et spécifiez le nom du pool et la région dans laquelle vous souhaitez le créer.

   Dans cet exemple, nous nommons le pool `dcv-session-manager-client-app` et nous le créons dans`us-east-1`.

   ```
   $ aws cognito-idp create-user-pool --pool-name dcv-session-manager-client-app --region us-east-1
   ```

   Exemple de sortie

   ```
   {
       "UserPoolClient": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "ClientName": "dcv-session-manager-client-app",
           "ClientId": "15hhd8jij74hf32f24uEXAMPLE",
           "LastModifiedDate": 1602510048.054,
           "CreationDate": 1602510048.054,
           "RefreshTokenValidity": 30,
           "AllowedOAuthFlowsUserPoolClient": false
       }
   }
   ```

   Prenez note du`userPoolId`, vous en aurez besoin à l'étape suivante.

1. Créez un nouveau domaine pour votre groupe d'utilisateurs. Utilisez la [create-user-pool-domain](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-domain.html)commande et spécifiez un nom de domaine et le nom `userPoolId` du groupe d'utilisateurs que vous avez créé à l'étape précédente.

   Dans cet exemple, le nom de domaine est `mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE` et nous l'avons créé dans`us-east-1`.

   ```
   $ aws cognito-idp create-user-pool-domain --domain mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE --user-pool-id us-east-1_QLEXAMPLE --region us-east-1
   ```

   Exemple de sortie

   ```
   {
       "DomainDescription": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "AWSAccountId": "123456789012",
           "Domain": "mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE",
           "S3Bucket": "aws-cognito-prod-pdx-assets",
           "CloudFrontDistribution": "dpp0gtexample.cloudfront.net",
           "Version": "20201012133715",
           "Status": "ACTIVE",
           "CustomDomainConfig": {}
       }
   }
   ```

   Le format du domaine du pool d'utilisateurs est le suivant :`https://domain_name.auth.region.amazoncognito.com`. Dans cet exemple, le domaine du groupe d'utilisateurs est`https://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com`.

1. Créez un client de groupe d'utilisateurs. Utilisez la [create-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html)commande et spécifiez le `userPoolId` groupe d'utilisateurs que vous avez créé, le nom du client et la région dans laquelle le créer. Incluez également l'`--generate-secret`option permettant de spécifier que vous souhaitez générer un secret pour le client du groupe d'utilisateurs en cours de création.

   Dans ce cas, le nom du client est `dcv-session-manager-client-app` et nous le créons dans la `us-east-1` région.

   ```
   $ aws cognito-idp create-user-pool-client --user-pool-id us-east-1_QLEXAMPLE --client-name dcv-session-manager-client-app --generate-secret --region us-east-1
   ```

   Exemple de sortie

   ```
   {
       "UserPoolClient": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "ClientName": "dcv-session-manager-client-app",
           "ClientId": "2l9273hp6k2ut5cugg9EXAMPLE",
           "ClientSecret": "1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE",
           "LastModifiedDate": 1602510291.498,
           "CreationDate": 1602510291.498,
           "RefreshTokenValidity": 30,
           "AllowedOAuthFlowsUserPoolClient": false
       }
   }
   ```
**Note**  
Prenez note de la `ClientId` et`ClientSecret`. Vous devrez fournir ces informations aux développeurs lorsqu'ils demanderont des jetons d'accès pour les demandes d'API.

1. Créez un nouveau serveur de ressources OAuth2 .0 pour le groupe d'utilisateurs. Un serveur de ressources est un serveur dédié aux ressources à accès protégé. Il gère les demandes authentifiées de jetons d'accès. 

   Utilisez la [create-resource-server](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-resource-server.html)commande et spécifiez le `userPoolId` groupe d'utilisateurs, un identifiant unique et un nom pour le serveur de ressources, l'étendue et la région dans laquelle le créer.

   Dans cet exemple, nous utilisons `dcv-session-manager` comme identifiant et nom, et nous utilisons `sm_scope` comme nom et description de la portée.

   ```
   $ aws cognito-idp create-resource-server --user-pool-id us-east-1_QLEXAMPLE --identifier dcv-session-manager --name dcv-session-manager --scopes ScopeName=sm_scope,ScopeDescription=sm_scope --region us-east-1
   ```

   Exemple de sortie

   ```
   {
       "ResourceServer": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "Identifier": "dcv-session-manager",
           "Name": "dcv-session-manager",
           "Scopes": [
           {
               "ScopeName": "sm_scope",
               "ScopeDescription": "sm_scope"
           }]
       }
   }
   ```

1. Mettez à jour le client du groupe d'utilisateurs. 

   Utilisez la commande [update-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html). Spécifiez le `userPoolId` groupe d'utilisateurs, le client `ClientId` du groupe d'utilisateurs et la région. Pour`--allowed-o-auth-flows`, spécifiez `client_credentials` pour indiquer que le client doit obtenir des jetons d'accès depuis le point de terminaison du jeton en utilisant une combinaison d'un identifiant client et d'un secret client. Pour`--allowed-o-auth-scopes`, spécifiez l'identifiant du serveur de ressources et le nom de la portée comme suit :`resource_server_identifier/scope_name`. Incluez le `--allowed-o-auth-flows-user-pool-client` pour indiquer que le client est autorisé à suivre le OAuth protocole lorsqu'il interagit avec les groupes d'utilisateurs de Cognito.

   ```
   $ aws cognito-idp update-user-pool-client --user-pool-id us-east-1_QLEXAMPLE --client-id 2l9273hp6k2ut5cugg9EXAMPLE --allowed-o-auth-flows client_credentials --allowed-o-auth-scopes dcv-session-manager/sm_scope --allowed-o-auth-flows-user-pool-client --region us-east-1
   ```

   Exemple de sortie

   ```
   {
       "UserPoolClient": {
           "UserPoolId": "us-east-1_QLEXAMPLE",
           "ClientName": "dcv-session-manager-client-app",
           "ClientId": "2l9273hp6k2ut5cugg9EXAMPLE",
           "ClientSecret": "1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE",
           "LastModifiedDate": 1602512103.099,
           "CreationDate": 1602510291.498,
           "RefreshTokenValidity": 30,
           "AllowedOAuthFlows": [
               "client_credentials"
           ],
           "AllowedOAuthScopes": [
               "dcv-session-manager/sm_scope"
           ],
           "AllowedOAuthFlowsUserPoolClient": true
       }
   }
   ```
**Note**  
Le groupe d'utilisateurs est désormais prêt à fournir et à authentifier des jetons d'accès. Dans cet exemple, l'URL du serveur d'autorisation est`https://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json`.

1. Testez la configuration.

   ```
   $ curl -H "Authorization: Basic `echo -n 2l9273hp6k2ut5cugg9EXAMPLE:1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE | base64`" -H "Content-Type: application/x-www-form-urlencoded" -X POST "https://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com/oauth2/token?grant_type=client_credentials&scope=dcv-session-manager/sm_scope"
   ```

   Exemple de sortie

   ```
   {
   "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw",
   "expires_in":3600,
   "token_type":"Bearer"
   }
   ```

1. Enregistrez le serveur d'autorisation externe à utiliser avec le courtier à l'aide de la [register-auth-server](register-auth-server.md) commande.

   ```
   $ sudo -u root dcv-session-manager-broker register-auth-server --url  https://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json
   ```

Les développeurs peuvent désormais utiliser le serveur pour demander des jetons d'accès. Lorsque vous demandez des jetons d'accès, fournissez l'ID client, le secret du client et l'URL du serveur générés ici. Pour plus d'informations sur la demande de jetons d'accès, consultez la section [Créer, obtenir un jeton d'accès et effectuer une demande d'API](https://docs.aws.amazon.com/dcv/latest/sm-dev/request.html) dans le *guide du développeur Amazon DCV Session Manager*.