

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione di un server di autorizzazione esterno
<a name="ext-auth"></a>

Il server di autorizzazione è il server responsabile dell'autenticazione e dell'autorizzazione del client e degli agenti. SDKs 

Per impostazione predefinita, Session Manager utilizza il Broker come server di autorizzazione per generare token di accesso OAuth 2.0 per le istruzioni client SDKs e software per gli agenti. Se si utilizza il Broker come server di autorizzazione, non è richiesta alcuna configurazione aggiuntiva.

Puoi configurare Session Manager per utilizzare Amazon Cognito come server di autorizzazione esterno anziché Broker. Per ulteriori informazioni su Amazon Cognito, consulta la Amazon Cognito [Developer Guide](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html).

**Per utilizzare Amazon Cognito come server di autorizzazione**

1. Crea un nuovo pool di utenti Amazon Cognito. Per ulteriori informazioni sui pool di utenti, consulta [le caratteristiche di Amazon Cognito nella Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html#feature-overview) *Developer Guide*.

   Usa il [create-user-pool](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool.html)comando e specifica il nome del pool e la regione in cui crearlo.

   In questo esempio, diamo un nome al pool `dcv-session-manager-client-app` e lo creiamo in`us-east-1`.

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

   Output di esempio

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

   Prendi nota del`userPoolId`, ti servirà nel passaggio successivo.

1. Crea un nuovo dominio per il tuo pool di utenti. Usa il [create-user-pool-domain](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-domain.html)comando e specifica un nome di dominio e il pool `userPoolId` di utenti che hai creato nel passaggio precedente.

   In questo esempio, il nome di dominio è `mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE` e lo creiamo in`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
   ```

   Output di esempio

   ```
   {
       "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": {}
       }
   }
   ```

   Il formato del dominio del pool di utenti è il seguente:`https://domain_name.auth.region.amazoncognito.com`. In questo esempio, il dominio del pool di utenti è`https://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com`.

1. Creazione di un client pool di utenti Utilizzate il [create-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html)comando e specificate il pool `userPoolId` di utenti che avete creato, un nome per il client e la regione in cui crearlo. Inoltre, includi l'`--generate-secret`opzione per specificare che desideri generare un segreto per il client del pool di utenti che stai creando.

   In questo caso, il nome del client è `dcv-session-manager-client-app` e lo creiamo nella `us-east-1` regione.

   ```
   $ 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
   ```

   Output di esempio

   ```
   {
       "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
       }
   }
   ```
**Nota**  
Prendi nota della `ClientId` e`ClientSecret`. Dovrai fornire queste informazioni agli sviluppatori per quando richiedono i token di accesso per le richieste API.

1. Crea un nuovo server di risorse OAuth2 2.0 per il pool di utenti. Un server di risorse è un server di risorse ad accesso protetto. Gestisce le richieste autenticate di token di accesso. 

   Utilizza il [create-resource-server](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-resource-server.html)comando e specifica il pool `userPoolId` di utenti, un identificatore e un nome univoci per il server di risorse, l'ambito e la regione in cui crearlo.

   In questo esempio, utilizziamo `dcv-session-manager` come identificatore e nome e utilizziamo `sm_scope` come nome e descrizione dell'ambito.

   ```
   $ 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
   ```

   Output di esempio

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

1. Aggiorna il client del pool di utenti. 

   Utilizza il comando [update-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html). Specificare il pool `userPoolId` di utenti, il client `ClientId` del pool di utenti e la regione. Per`--allowed-o-auth-flows`, specifica `client_credentials` di indicare che il client deve ottenere i token di accesso dall'endpoint del token utilizzando una combinazione di un ID client e un segreto client. Per`--allowed-o-auth-scopes`, specificare l'identificatore del server di risorse e il nome dell'ambito come segue:. `resource_server_identifier/scope_name` `--allowed-o-auth-flows-user-pool-client`Includi il per indicare che il client è autorizzato a seguire il OAuth protocollo quando interagisce con i pool di utenti di 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
   ```

   Output di esempio

   ```
   {
       "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
       }
   }
   ```
**Nota**  
Il pool di utenti è ora pronto per fornire e autenticare i token di accesso. In questo esempio, l'URL del server di autorizzazione è. `https://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json`

1. Verifica la configurazione.

   ```
   $ 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"
   ```

   Output di esempio

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

1. Registra il server di autorizzazione esterno da utilizzare con il broker utilizzando il [register-auth-server](register-auth-server.md) comando.

   ```
   $ 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
   ```

Gli sviluppatori possono ora utilizzare il server per richiedere i token di accesso. Quando richiedi i token di accesso, fornisci l'ID client, il segreto del client e l'URL del server generati qui. Per ulteriori informazioni sulla richiesta di token di accesso, consulta [Create get an access token and make an API request](https://docs.aws.amazon.com/dcv/latest/sm-dev/request.html) nella *Amazon DCV Session Manager* Developer Guide.