

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à.

# Utilizzo di un token Web JSON (JWT) con un segreto condiviso
<a name="create-index-access-control-tokens-jwtshared"></a>

Gli esempi seguenti mostrano come utilizzare JSON Web Token (JWT) con un token segreto condiviso per il controllo dell'accesso degli utenti quando si crea un indice. 

------
#### [ Console ]

1. Scegli **Crea indice** per iniziare a creare un nuovo indice.

1. Nella pagina **Specificare i dettagli dell'**indice, assegna un nome e una descrizione all'indice.

1. Per **il ruolo IAM**, seleziona un ruolo o seleziona **Crea un nuovo ruolo** e specifica un nome di ruolo per creare un nuovo ruolo. Il IAM ruolo avrà il prefisso "AmazonKendra-».

1. Lascia tutti gli altri campi ai valori predefiniti. Scegli **Next (Successivo)**.

1. Nella pagina **Configura il controllo dell'accesso utente**, in **Impostazioni di controllo degli accessi**, scegli **Sì** per utilizzare i token per il controllo degli accessi.

1. In **Configurazione del token**, seleziona **JWT con segreto condiviso** come tipo di **token**.

1. In **Parametri per la firma del segreto condiviso**, scegli il **Tipo di segreto**. Puoi utilizzare un segreto Gestione dei segreti AWS condiviso esistente o crearne uno nuovo.

   Per creare un nuovo segreto condiviso, scegli **Nuovo** e segui questi passaggi:

   1. In **Nuovo Gestione dei segreti AWS segreto**, specifica un **nome segreto**. Il prefisso `AmazonKendra-` verrà aggiunto quando si salva la chiave pubblica.

   1. Specificate un **ID chiave.** L'ID della chiave è un suggerimento che indica quale chiave è stata utilizzata per proteggere la firma web JSON del token.

   1. Scegli l'**algoritmo** di firma per il token. Questo è l'algoritmo crittografico utilizzato per proteggere il token ID. Per ulteriori informazioni su RSA, consulta [Crittografia RSA](https://tools.ietf.org/html/rfc3447).

   1. Specificare un **segreto condiviso** inserendo un segreto con codifica URL base64. Puoi anche selezionare **Genera segreto per generare** un segreto per te. Devi assicurarti che il segreto sia un segreto con codifica URL base64.

   1. (*Facoltativo*) Specificate quando il segreto condiviso è valido. È possibile specificare la data e l'ora in cui un segreto è valido, valido fino a o entrambi. Il segreto sarà valido nell'intervallo specificato.

   1. Seleziona **Salva segreto** per salvare il nuovo segreto.

1. (*Facoltativo*) In **Configurazione avanzata**:

   1. Specificate un **nome utente** da utilizzare nel controllo ACL.

   1. Specificare uno o più **gruppi** da utilizzare nel controllo ACL.

   1. Specificare l'**emittente** che convaliderà l'emittente del token.

   1. Specificare gli **ID del reclamo**. È necessario specificare un'espressione regolare che corrisponda al pubblico nel JWT.

1. Nella pagina dei **dettagli del provisioning**, scegli **Developer** edition.

1. Scegli **Crea** per creare il tuo indice.

1. Attendi la creazione dell'indice. Amazon Kendra fornisce l'hardware per l'indice. Questa operazione può richiedere del tempo.

------
#### [ CLI ]

Puoi usare il token JWT con un segreto condiviso all'interno di Gestione dei segreti AWS. Il segreto deve essere un segreto con codifica URL base64. È necessario l' Secrets Manager ARN e il Amazon Kendra ruolo deve avere accesso alla `GetSecretValue` Secrets Manager risorsa. Se stai crittografando la Secrets Manager risorsa con AWS KMS, il ruolo deve avere accesso anche all'azione di decrittografia.

Per creare un indice AWS CLI utilizzando un file di input JSON, create innanzitutto un file JSON con i parametri desiderati: 

```
{
    "Name": "{{user-context}}",
    "Edition": "{{ENTERPRISE_EDITION}}",
    "RoleArn": "arn:aws:iam::{{account-id}}:role:/{{my-role}}",
    "UserTokenConfigurations": [
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "SECRET_MANAGER",
                "Issuer": "{{optional: specify the issuer url}}",
                "ClaimRegex": "{{optional: regex to validate claims in the token}}",
                "UserNameAttributeField": "{{optional: user}}",
                "GroupAttributeField": "{{optional: group}}",
                "SecretManagerArn": "arn:aws:secretsmanager:{{us-west-2}}:{{account id}}:secret:/{{my-user-context-secret}}
            }
        }
    ],    
    "UserContextPolicy": "USER_TOKEN"
}
```

È possibile sovrascrivere i nomi dei campi utente e gruppo predefiniti. Il valore predefinito per `UserNameAttributeField` è «user». Il valore predefinito per `GroupAttributeField` è «groups». 

Quindi, chiama `create-index` utilizzando il file di input. Ad esempio, se il nome del file JSON è`create-index-openid.json`, puoi utilizzare quanto segue: 

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

Il segreto deve avere il seguente formato in Gestione dei segreti AWS:

```
{
  "keys": [
    {
      "kid": "{{key_id}}",
      "alg": "HS256|HS384|HS512",
      "kty": "OCT", 
      "use": "sig", //this value can be sig only for now
      "k": "{{secret}}",
      "nbf":"{{ISO1806 date format}}"
      "exp":"{{ISO1806 date format}}"
    }
  ]
}
```

Per ulteriori informazioni su JWT, vedere [jwt.io](http://jwt.io).

------
#### [ Python ]

Puoi usare il token JWT con un segreto condiviso all'interno di. Gestione dei segreti AWS Il segreto deve essere un segreto con codifica URL base64. È necessario l' Secrets Manager ARN e il Amazon Kendra ruolo deve avere accesso alla `GetSecretValue` Secrets Manager risorsa. Se stai crittografando la Secrets Manager risorsa con AWS KMS, il ruolo deve avere accesso anche all'azione di decrittografia.

```
response = kendra.create_index(
    Name='{{user-context}}',
    Edition='{{ENTERPRISE_EDITION}}',
    RoleArn='arn:aws:iam::{{account-id}}:role:/{{my-role}}',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "{{optional: specify the issuer url}}",
                "ClaimRegex": "{{optional: regex to validate claims in the token}}",
                "UserNameAttributeField": "{{optional: user}}",
                "GroupAttributeField": "{{optional: group}}",
                "SecretManagerArn": "arn:aws:secretsmanager:{{us-west-2}}:{{account id}}:secret:/{{my-user-context-secret}}"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------