JWT validieren
Verwenden Sie die Sicherheitsrichtlinie JWT validieren , um die Validierung eines JWT (JSON Web Token) in einer Anforderung zu aktivieren, bevor Sie den Zugriff auf die APIs zulassen.
Gateway-Unterstützung
| Gateway | Richtlinienversion |
|---|---|
| DataPower® Gateway (v5 compatible) | 1.0.0 |
| DataPower API Gateway | 2.0.0 |
In diesem Abschnitt wird die Konfiguration der Richtlinie in der Assembly-Benutzerschnittstelle beschrieben. Details zur Konfiguration der Richtlinie in Ihrer OpenAPI -Quelle finden Sie unter jwt-validate.
Produktinfo
JSON-Web-Token (JWT) ist eine kompakte, URL-sichere Möglichkeit, Anforderungen darzustellen, die zwischen zwei Parteien übertragen werden sollen. Mit der Richtlinie JWT validieren können Sie den Zugriff auf Ihre APIs mithilfe der JWT-Validierung sichern. Wenn beispielsweise eine Eingabeanforderung empfangen wird, die ein JWT im Header enthält, extrahiert die Richtlinie JWT validieren das Token, prüft und entschlüsselt (falls zutreffend) die Signatur und validiert den Anspruch. Wenn sie gültig ist, wird die Anforderung in eine Laufzeitvariable gesetzt (für die spätere Verwendung bei Bedarf) und der API wird der Zugriff gewährt. Wenn die Anforderung nicht gültig ist, wird der Zugriff verweigert.
Alle Claims, die in der Richtlinie JWT validieren angegeben sind, werden validiert, aber dies sind nicht unbedingt alle Claims, die im JWT enthalten sind. Es müssen nicht alle Deklarationen im JWT validiert werden, aber wenn eine der Deklarationen, die in der Richtlinie JWT validieren angegeben sind, fehlschlägt, schlägt die gesamte Validierung fehl. Wenn die Validierung erfolgreich ist, wird die vollständige Gruppe von Claims, die im JWT enthalten sind, in die Laufzeitvariable geschrieben, die in der Eigenschaft Output Claims angegeben ist. Dadurch wird ermöglicht, dass alle nachfolgenden Aktionen diese Laufzeitvariable verwenden können, um nach Bedarf den vollständigen Satz an Anforderungen, die sich im JWT befanden, weiter zu validieren.
- Wenn die ursprüngliche Nachricht mit einem geheimen Schlüssel für die gemeinsame Nutzung signiert wurde, muss das angegebene Verschlüsselungsobjekt ebenfalls ein geheimer Schlüssel für die gemeinsame Nutzung sein.
- Wenn die ursprüngliche Nachricht mit einem privaten Schlüssel signiert wurde, muss das angegebene Verschlüsselungsobjekt ein Crypto-Zertifikat (öffentliches Zertifikat) sein.
- Das Verschlüsselungsmaterial kann über einen JSON Web Key (JWK) bereitgestellt werden.
- Wenn ein JWK-Headerparameter im Header des JWT eingeschlossen ist, muss der Parameter dem JWK oder dem Verschlüsselungsobjekt entsprechen, der/das in der Richtlinie angegeben ist. Andernfalls schlägt die JWT-Validierung fehl.
- Wenn sowohl ein Verschlüsselungsobjekt als auch ein JWK angegeben werden, wird das Verschlüsselungsobjekt verwendet, um das JWT zu entschlüsseln oder zu überprüfen.
- Die JWT-Validierungsaktion auf dem DataPower API Gateway kann ein JWT mit einem einzelnen JWK oder einer JWK-Gruppe verifizieren.
Voraussetzungen
- IBM® DataPower V7.5 mit der Option "Application Optimization" (AO).
- Wenn Sie ein oder mehrere kryptografische Objekte (Krypto-Objekte) verwenden, müssen diese sich in der IBM API Connect -Domain auf dem DataPower gerät befinden. Die Verschlüsselungsobjekte müssen auf den geheimen Schlüssel für die gemeinsame Nutzung oder auf das öffentliche Zertifikat verweisen, der/das zum Entschlüsseln der JWT-Inhalte oder zum Überprüfen der Signatur benötigt wird.
- Wenn ein JWK (JSON Web Key) oder eine JWK-Gruppe verwendet wird, muss eine Laufzeitvariable darauf verweisen.
Eigenschaften
Die folgende Tabelle enthält die Richtlinieneigenschaften, gibt an, ob eine Eigenschaft erforderlich ist, enthält die gültigen Werte und die Standardwerte für Eingaben und gibt den jeweiligen Datentyp der Werte an.
| Eigenschaftsbezeichnung | Erforderlich | Beschreibung | Datentyp |
|---|---|---|---|
| Titel | Ja | Der Titel der Richtlinie. Der Standardwert ist |
Zeichenfolge |
| Beschreibung | Nein | Eine Beschreibung der Richtlinie. | Zeichenfolge |
| JSON-Web-Token (JWT) | Ja | Kontext- oder Laufzeitvariable, die das zu validierende JWT enthält. Der Standardwert ist Hinweis: Der Berechtigungsheader muss folgendes Format haben:
Dabei ist jwt-token das verschlüsselte JWT. |
Zeichenfolge |
| Ausgabeanforderungen | Ja | Laufzeitvariable, der der vollständige Satz an im JWT enthaltenen Anforderungen zugewiesen wird. Der Standardwert ist |
Zeichenfolge |
| Ausstelleranforderung | Nein | Der Perl Compatible Regular Expressions (PCRE) für die Validierung des Ausstelleranspruchs (iss). | Zeichenfolge |
| Zielgruppenanforderung | Nein | Der zum Validieren der Zielgruppenanforderung (aud) zu verwendende PCRE. | Zeichenfolge |
| Crypto-Objekt entschlüsseln | Nein | Das Verschlüsselungsobjekt (ein gemeinsam genutzter Schlüssel oder ein Zertifikat), das zum Entschlüsseln der Anforderung verwendet werden soll.1 | Zeichenfolge |
| Crypto-JWK-Variablennamen entschlüsseln | Nein | Laufzeitvariable, die den JWK enthält, der zum Entschlüsseln des JWT verwendet werden soll.1 | Zeichenfolge |
| Crypto-Objekt überprüfen | Nein | Das Verschlüsselungsobjekt (gemeinsam genutzter Schlüssel oder Zertifikat), das zum Prüfen der Signatur verwendet werden soll2 | Zeichenfolge |
| Crypto-JWK-Variablennamen überprüfen | Nein | Laufzeitvariable, die den JWK oder die JWK-Gruppe für die Überprüfung der Signatur enthält.2 | Zeichenfolge |
Beispiel
- jwt-validate:
version: 1.0.0
title: jwt-validate
jwt: request.headers.authorization
output-claims: decoded.claims
iss-claim: "'^data.*'"
aud-claim: "'^id.*'"
jwe-crypto: jweCryptoObjectName
jwe-jwk: jwe.jwk
jws-crypto: jwsCryptoObjectName
jws-jwk: jws.jwk
Fehler
RuntimeError- ein generischer Fehler, der alle Fehler erfasst, die während der Ausführung der Richtlinie aufgetreten sind. Bei einem Fehler bei der Gültigkeitsprüfung wird die detaillierte Fehlernachricht, die vom zugrunde liegenden JOSE-Modul empfangen wird, als Fehlernachricht in das Standard-Systemprotokoll geschrieben. Diese detaillierte Fehlernachricht wird auch der Laufzeitvariable jwt-validate.error-message zugewiesen, sodass sie per Catch abgerufen werden kann.
Invalid-JWT-Validate Wenn kein Catch konfiguriert ist, gibt die Validate JWT-Richtlinie im Falle eines Validierungsfehlers einen HTTP -Fehlercode 500 zurück. Die detaillierte Fehlernachricht aus dem zugrunde liegenden JOSE-Modul befindet sich im Systemprotokoll.