

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden eines JSON-Web-Tokens (JWT) mit einem gemeinsamen geheimen Schlüssel
<a name="create-index-access-control-tokens-jwtshared"></a>

Die folgenden Beispiele zeigen, wie Sie JSON Web Token (JWT) mit einem Shared Secret-Token für die Benutzerzugriffskontrolle verwenden, wenn Sie einen Index erstellen. 

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

1. Wählen Sie **Create Index** aus, um mit der Erstellung eines neuen Indexes zu beginnen.

1. **Geben Sie auf der Seite Indexdetails** angeben Ihrem Index einen Namen und eine Beschreibung.

1. Wählen Sie für die **IAM-Rolle** eine Rolle aus, oder wählen Sie **Neue Rolle erstellen** für und geben Sie einen Rollennamen an, um eine neue Rolle zu erstellen. Die IAM Rolle wird das Präfix "AmazonKendra-“ haben.

1. Behalten Sie für alle anderen Felder ihre Standardwerte bei. Wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **Benutzerzugriffskontrolle konfigurieren** unter **Einstellungen für die Zugriffskontrolle** die Option **Ja** aus, um Token für die Zugriffskontrolle zu verwenden.

1. Wählen Sie unter **Tokenkonfiguration** **JWT with Shared Secret** als **Tokentyp** aus.

1. Wählen Sie unter **Parameter für das Signieren von Shared Secret** den **Typ des Geheimnisses aus**. Sie können einen vorhandenen AWS Secrets Manager gemeinsamen geheimen Schlüssel verwenden oder einen neuen gemeinsamen geheimen Schlüssel erstellen.

   Um einen neuen gemeinsamen geheimen Schlüssel zu erstellen, wählen Sie **Neu** und gehen Sie dann wie folgt vor:

   1. Geben Sie unter **Neuer AWS Secrets Manager geheimer** **Schlüssel einen geheimen Namen** an. Das Präfix `AmazonKendra-` wird hinzugefügt, wenn Sie den öffentlichen Schlüssel speichern.

   1. Geben Sie eine **Schlüssel-ID** an. Die Schlüssel-ID ist ein Hinweis, der angibt, welcher Schlüssel verwendet wurde, um die JSON-Websignatur des Tokens zu sichern.

   1. Wählen Sie den **Signaturalgorithmus** für das Token. Dies ist der kryptografische Algorithmus, der zur Sicherung des ID-Tokens verwendet wird. For more information on RSA, see [RSA Cryptography](https://tools.ietf.org/html/rfc3447).

   1. Geben Sie einen **gemeinsamen geheimen Schlüssel** an, indem Sie einen Base64-URL-codierten Schlüssel eingeben. Sie können auch „**Geheim generieren**“ auswählen, um ein Geheimnis für Sie generieren zu lassen. Sie müssen sicherstellen, dass es sich bei dem Secret um ein Base64-URL-kodiertes Geheimnis handelt.

   1. (*Optional*) Geben Sie an, wann der gemeinsame geheime Schlüssel gültig ist. Sie können das Datum und die Uhrzeit angeben, ab dem ein Geheimnis gültig ist, bis wann es gültig ist oder beides. Das Geheimnis ist in dem angegebenen Intervall gültig.

   1. Wählen Sie **Geheim speichern**, um das neue Geheimnis zu speichern.

1. (*Optional) Gehen* Sie unter **Erweiterte Konfiguration** wie folgt vor:

   1. Geben Sie einen **Benutzernamen** an, der bei der ACL-Prüfung verwendet werden soll.

   1. Geben Sie eine oder mehrere **Gruppen** an, die bei der ACL-Prüfung verwendet werden sollen.

   1. Geben Sie den **Aussteller** an, der den Token-Aussteller validieren wird.

   1. Geben Sie die **Antragsnummer (n)** an. Sie müssen einen regulären Ausdruck angeben, der der Zielgruppe im JWT entspricht.

1. Wählen Sie auf der Seite mit den **Bereitstellungsdetails** die **Developer** Edition aus.

1. Wählen Sie **Erstellen**, um Ihren Index zu erstellen.

1. Warten Sie, bis Ihr Index erstellt wurde. Amazon Kendra stellt die Hardware für Ihren Index bereit. Dieser Vorgang kann einige Zeit in Anspruch nehmen.

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

Sie können das JWT-Token mit einem gemeinsamen geheimen Schlüssel verwenden. AWS Secrets Manager Das Geheimnis muss ein Base64-URL-kodiertes Geheimnis sein. Sie benötigen den Secrets Manager ARN, und Ihre Amazon Kendra Rolle muss Zugriff `GetSecretValue` auf die Secrets Manager Ressource haben. Wenn Sie die Secrets Manager Ressource mit verschlüsseln AWS KMS, muss die Rolle auch Zugriff auf die Entschlüsselungsaktion haben.

Um AWS CLI mithilfe einer JSON-Eingabedatei einen Index zu erstellen, erstellen Sie zunächst eine JSON-Datei mit den gewünschten Parametern: 

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

Sie können die standardmäßigen Benutzer- und Gruppenfeldnamen überschreiben. Der Standardwert für `UserNameAttributeField` ist „Benutzer“. Der Standardwert für `GroupAttributeField` ist „Gruppen“. 

Rufen Sie als Nächstes `create-index` mit der Eingabedatei auf. Wenn der Name Ihrer JSON-Datei beispielsweise lautet`create-index-openid.json`, können Sie Folgendes verwenden: 

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

Das Geheimnis muss das folgende Format haben in AWS Secrets Manager:

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

Weitere Informationen zu JWT finden Sie unter [jwt.io](http://jwt.io).

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

Sie können das JWT-Token mit einem gemeinsamen geheimen Schlüssel darin verwenden. AWS Secrets Manager Das Geheimnis muss ein Base64-URL-kodiertes Geheimnis sein. Sie benötigen den Secrets Manager ARN, und Ihre Amazon Kendra Rolle muss Zugriff `GetSecretValue` auf die Secrets Manager Ressource haben. Wenn Sie die Secrets Manager Ressource mit verschlüsseln AWS KMS, muss die Rolle auch Zugriff auf die Entschlüsselungsaktion haben.

```
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'
)
```

------