View a markdown version of this page

Überprüfen Sie JWTs mithilfe eines Application Load Balancers - Elastic Load Balancing

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.

Überprüfen Sie JWTs mithilfe eines Application Load Balancers

Sie können einen Application Load Balancer (ALB) so konfigurieren, dass er JSON-Web-Tokens (JWT) verifiziert, die von Clients für sichere Service-to-Service- (S2S) oder Machine-to-Machine-Kommunikation (M2M) bereitgestellt werden. Der Load Balancer kann ein JWT unabhängig davon verifizieren, wie es ausgestellt wurde und ohne menschliches Eingreifen.

ALB validiert die Token-Signatur und erfordert zwei obligatorische Angaben: „iss“ (Aussteller) und „exp“ (Ablauf). Falls im Token vorhanden, validiert ALB außerdem die Ansprüche „nbf“ (nicht vorher) und „iat“ (zu gegebener Zeit ausgestellt). Sie können bis zu 10 zusätzliche Ansprüche für die Validierung konfigurieren. Diese Ansprüche unterstützen drei Formate:

  • Single-string: Ein einzelner Textwert

  • Space-separated Werte: Mehrere durch Leerzeichen getrennte Werte (maximal 10 Werte)

  • String-array: Ein Array von Textwerten (maximal 10 Werte)

Wenn das Token gültig ist, leitet der Load Balancer die Anfrage mit unverändertem Token an das Ziel weiter. Andernfalls wird die Anforderung abgelehnt.

Bereiten Sie sich auf die Verwendung der JWT-Überprüfung vor

Führen Sie die folgenden Schritte aus:

  1. Registrieren Sie Ihren Service bei einem IdP, der eine Client-ID und ein Client-Geheimnis ausgibt.

  2. Rufen Sie den IdP separat an, um den Zugriff auf einen Dienst anzufordern. Der IdP antwortet mit einem Zugriffstoken. Dieses Token ist in der Regel ein vom IdP signiertes JWT.

  3. Richten Sie einen JSON-Endpunkt für Web Key Sets (JWKS) ein. Der Load Balancer erwirbt den öffentlichen Schlüssel, der vom IdP an einem bekannten Ort veröffentlicht wurde, den Sie konfigurieren.

  4. Fügen Sie den JWT in einen Anforderungsheader ein und leiten Sie ihn bei jeder Anfrage an den Application Load Balancer weiter. Hinweis: Nur der RS256-Algorithmus wird unterstützt

JWT-Validierungsgrenzen

Wenn Sie die JWT-Validierung mit Ihrem Application Load Balancer verwenden, muss der JWKS-Endpunkt (JSON Web Key Set) die folgenden Anforderungen erfüllen:

  • Maximale Antwortgröße: 150 KB

  • Maximale Anzahl von Schlüsseln: 10 Schlüssel

Wenn die JWKS-Antwort von Ihrem Identitätsanbieter einen dieser Grenzwerte überschreitet, leitet der Application Load Balancer keine Anfragen an Ihre Backend-Ziele weiter.

Wenn der JWKS-Endpunkt Ihres Identitätsanbieters diese Grenzwerte überschreitet, sollten Sie erwägen, die JWT-Validierung in Ihrem Anwendungscode zu implementieren oder einen Identitätsanbieter mit einem kleineren Schlüsselsatz zu verwenden.

So konfigurieren Sie die JWT-Überprüfung mithilfe der Konsole

  1. Öffnen Sie die Amazon EC2-Konsolenkonsole unter. https://console.aws.amazon.com/ec2/

  2. Wählen Sie im Navigationsbereich unter LOAD BALANCING die Option Load Balancers aus.

  3. Wählen Sie Ihren Application Load Balancer aus und klicken Sie auf den Tab Listeners.

  4. Wählen Sie einen HTTPS-Listener aus und wählen Sie Regeln verwalten.

  5. Wählen Sie Regel hinzufügen aus.

  6. (Optional) Um einen Namen für Ihre Regel anzugeben, erweitern Sie Name und Tags und geben Sie den Namen ein. Um weitere Tags hinzuzufügen, wählen Sie Zusätzliche Tags hinzufügen und geben Sie den Tag-Schlüssel und den Tag-Wert ein.

  7. Definieren Sie unter Bedingungen 1-5 Bedingungswerte

  8. (Optional) Um eine Transformation hinzuzufügen, wählen Sie „Transformation hinzufügen“, wählen Sie den Transformationstyp und geben Sie einen passenden regulären Ausdruck sowie eine Ersatzzeichenfolge ein.

  9. Wählen Sie für Aktionen, Pre-routing Aktion die Option Token validieren aus.

    1. Geben Sie für den JWKS-Endpunkt die URL Ihres JSON Web Key Set-Endpunkts ein. Dieser Endpunkt muss öffentlich zugänglich sein und die öffentlichen Schlüssel zurückgeben, die zur Überprüfung der JWT-Signaturen verwendet werden.

    2. Geben Sie für Issuer den erwarteten Wert des ISS-Anspruchs in Ihren JWT-Token ein.

    3. (Optional) Um zusätzliche Ansprüche zu validieren, wählen Sie Additional claim aus.

      1. Geben Sie unter Anspruchsname den Namen des Anspruchs ein, der überprüft werden soll.

      2. Wählen Sie unter Format aus, wie die Anspruchswerte interpretiert werden sollen:

        1. Einzelne Zeichenfolge: Die Behauptung muss genau einem angegebenen Wert entsprechen.

        2. Zeichenkettenarray: Die Behauptung muss mit einem der Werte in einem Array übereinstimmen.

        3. Durch Leerzeichen getrennte Werte: Die Behauptung enthält durch Leerzeichen getrennte Werte, die die angegebenen Werte enthalten müssen.

      3. Geben Sie unter Werte die erwarteten Werte für den Anspruch ein.

      4. Wiederholen Sie den Vorgang für weitere Ansprüche (maximal 10 Ansprüche).

  10. Wählen Sie für Aktionen, Weiterleitungsaktion die primäre Aktion (Weiterleiten an, Umleiten an oder Rückgabe fester Antwort) aus, die nach erfolgreicher Token-Validierung ausgeführt werden soll.

  11. Konfigurieren Sie die primäre Aktion nach Bedarf

  12. Wählen Sie Speichern.

So konfigurieren Sie die JWT-Überprüfung mithilfe der CLI

Verwenden Sie den folgenden Befehl create-rule, um die JWT-Überprüfung zu konfigurieren.

Erstellen Sie eine Listener-Regel mit einer Aktion zur Überprüfung von JWTs. Der Listener muss ein HTTPS-Listener sein.

Anmerkung

Stellen Sie bei der Konfiguration der JWT-Validierung sicher, dass Ihre JWKS-Endpunktantwort eine Größe von 150 KB nicht überschreitet oder mehr als 10 Schlüssel enthält. Antworten, die diese Grenzwerte überschreiten, verhindern die Weiterleitung von Anfragen an Ihre Ziele.

aws elbv2 create-rule \ --listener-arn listener-arn \ --priority 10 \ --conditions Field=path-pattern,Values="/login" \ --actions file://actions.json

Das Folgende ist ein Beispiel für die actions.json Datei, die eine jwt-validation Aktion und eine forward Aktion spezifiziert. In der Dokumentation Ihres Identitätsanbieters ist angegeben, welche Felder unterstützt werden.

--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com" }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'

Das folgende Beispiel gibt einen zusätzlichen Anspruch an, der überprüft werden muss.

--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com", "AdditionalClaims":[ { "Format":"string-array", "Name":"claim_name", "Values":["value1","value2"] } ], }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'

Weitere Informationen finden Sie unter Listener-Regeln für Ihren Application Load Balancer.