

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 una chiave pubblica
<a name="create-index-access-control-tokens-jwtpublic"></a>

Gli esempi seguenti mostrano come utilizzare JSON Web Token (JWT) con una chiave pubblica per il controllo dell'accesso degli utenti quando si crea un indice. [Per ulteriori informazioni su JWT, consulta jwt.io.](http://jwt.io)

------
#### [ 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 chiave pubblica** come tipo di **token**.

1. In **Parametri per la firma della chiave pubblica**, scegli il **tipo di segreto**. Puoi usare un Gestione dei segreti AWS segreto esistente o crearne uno nuovo.

   Per creare un nuovo segreto, 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. In **Attributi del certificato**, specifica una **catena di certificati** *opzionale*. La catena di certificati è composta da un elenco di certificati. Inizia con il certificato di un server e termina con il certificato radice.

   1. *Facoltativo* Specificare l'impronta digitale **o l'impronta digitale**. Dovrebbe essere l'hash di un certificato, calcolato su tutti i dati del certificato e sulla sua firma.

   1. **Specificare l'esponente.** Questo è il valore esponenziale per la chiave pubblica RSA. È rappresentato come valore con codifica UInt Base64URL.

   1. **Specificare il modulo.** Questo è il valore esponenziale per la chiave pubblica RSA. È rappresentato come valore con codifica UInt Base64URL.

   1. Seleziona **Salva chiave per salvare la nuova chiave**.

1. *Facoltativo* In **configurazione avanzata**:

   1. Specificare 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 client**. È 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 JWT con una chiave pubblica all'interno di un Gestione dei segreti AWS. È 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}}",
    "UserTokenConfigurationList": [
        {
            "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 Secrets Manager:

```
{
  "keys": [
    {
      "alg": "RS256|RS384|RS512",
      "kty": "RSA", //this can be RSA only for now
      "use": "sig", //this value can be sig only for now
      "n": "{{modulus of standard pem}}",
      "e": "{{exponent of standard pem}}",
      "kid": "{{key_id}}",
      "x5t": "{{certificate thumprint for x.509 cert}}",
      "x5c": [
        "{{certificate chain}}"
      ]
    }
  ]
}
```

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

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

```
response = kendra.create_index(
    Name='{{user-context}}',
    Edition='{{ENTERPRISE_EDITION}}',
    RoleArn='arn:aws:iam::{{account id}}:role:/{{my-role}}',
    UserTokenConfigurationList=[
        {
            "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'
)
```

------