<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen

Was
Entschlüsselt ein JWT, ohne die Signatur im JWT zu prüfen. Dies ist besonders nützlich, wenn es in Kombination mit der VerifyJWT-Richtlinie verwendet wird, wenn der Wert einer Anforderung innerhalb des JWT bekannt sein muss, bevor die Signatur des JWT verifiziert wird.
Die Richtlinie JWT decodieren funktioniert unabhängig vom Algorithmus, mit dem das JWT signiert wurde. Eine detaillierte Einführung finden Sie unter Übersicht über JWS- und JWT-Richtlinien.
Video
In diesem kurzen Video erfahren Sie, wie ein JWT decodiert wird.
Beispiel: JWT decodieren
Die unten gezeigte Richtlinie decodiert ein JWT aus der Ablaufvariable var.jwt. Diese Variable muss vorhanden sein und eine ausführbare (decodierbare) JWT enthalten. Die Richtlinie kann die JWT aus einer beliebigen Ablaufvariablen abrufen.
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>var.jwt</Source> </DecodeJWT>
Die Richtlinie schreibt ihre Ausgabe in Kontextvariablen, damit nachfolgende Richtlinien oder Bedingungen im API-Proxy diese Werte prüfen können. Eine Liste der von dieser Richtlinie festgelegten Variablen finden Sie unter Abrufvariabeln.
Elementreferenz für JWT decodieren
In der Richtlinienreferenz werden die Elemente und Attribute der Richtlinie JWT dekodieren beschrieben.
Attribute, die auf das oberste Element angewendet werden
<DecodeJWT name="JWT" continueOnError="false" enabled="true" async="false">
Die folgenden Attribute gelten für alle übergeordneten Richtlinienelemente.
Attribut | Beschreibung | Standard | Präsenz |
---|---|---|---|
name |
Der interne Name der Richtlinie. Folgende Zeichen sind im Namen zulässig: A-Z0-9._\-$ % . Die Edge-Management-Benutzeroberfläche erzwingt jedoch zusätzliche
Einschränkungen gelten, z. B. das automatische Entfernen von Zeichen, die nicht alphanumerisch sind.
Optional können Sie das Element |
– | Erforderlich |
continueOnError |
Legen Sie false fest, um einen Fehler zurückzugeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten.
Legen Sie |
false | Optional |
Aktiviert | Legen Sie true fest, um die Richtlinie zu erzwingen.
Legen Sie |
true | Optional |
async | Dieses Attribut wurde verworfen. | false | Veraltet |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Wird zusätzlich zum Namensattribut verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.
Standard | Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs der Richtlinie verwendet. |
Präsenz | Optional |
Typ | String |
<Source>
<Source>jwt-variable</Source>
Gibt, sofern vorhanden, die Ablaufvariable an, in der die Richtlinie das zu decodierende JWT findet.
Standard | request.header.authorization (Wichtige Informationen zur Standardeinstellung finden Sie im Hinweis oben). |
Präsenz | Optional |
Typ | String |
Zulässige Werte | Name einer Edge-Flussvariablen |
Ablaufvariablen
Bei Erfolg werden bestimmen die Richtlinien JWT prüfen und JWT dekodieren entsprechend folgendem Muster Kontextvariablen:
jwt.{policy_name}.{variable_name}
Beispiel: Lautet der Richtlinienname jwt-parse-token
, so speichert die Richtlinie das im JWT angegebene Subjekt in dieser Kontextvariable: jwt.jwt-parse-token.decoded.claim.sub
Aus Gründen der Abwärtskompatibilität ist sie auch in jwt.jwt-parse-token.claim.subject
verfügbar.
Variablenname | Beschreibung |
---|---|
claim.audience |
Die JWT-Zielgruppenanforderung. Dieser Wert kann ein String oder ein Array von Strings sein. |
claim.expiry |
Ablaufdatum bzw. Ablaufzeit in Millisekunden seit der Epoche. |
claim.issuedat |
Datum des Tokens in Millisekunden seit der Epoche. |
claim.issuer |
Anspruch des JWT-Ausstellers. |
claim.notbefore |
Wenn das JWT eine nbf-Anforderung enthält, enthält diese Variable den Wert, in Millisekunden seit der Epoche. |
claim.subject |
Anforderung des JWT-Betreffs. |
claim.name |
Der Wert des in der Nutzlast benannten Anspruchs (Standard oder Zusätzlich). Eines der Elemente wird für jeden Anspruch in der Nutzlast festgelegt. |
decoded.claim.name |
Der JSON-Parsewert der benannten Anforderung (Standard oder zusätzlicher) in der Nutzlast. Eine Variable wird für jeden Anspruch in der Nutzlast festgelegt. Sie können z. B. decoded.claim.iat verwenden, um
Ruft den Zeitpunkt der Ausgabe des JWT in Sekunden seit der Epoche ab. Sie können auch die Flow-Variablen claim.name verwenden. Dies ist jedoch die empfohlene Variable für den Zugriff auf eine Anforderung. |
decoded.header.name |
JSON-Parsingwert eines Headers in der Nutzlast. Für jeden Header in der Nutzlast wird eine Variable festgelegt. Sie können auch die Flow-Variablen header.name verwenden. Dies ist jedoch die empfohlene Variable für den Zugriff auf einen Header. |
expiry_formatted |
Ablaufdatum und -zeit als formatierter String. Beispiel: 2017-09-28T21:30:45.000+0000 |
header.algorithm |
Der für das JWT verwendete Signaturalgorithmus. Zum Beispiel RS256, HS384 usw. Weitere Informationen finden Sie unter Headerparameter (Algorithmus). |
header.kid |
Die Schlüssel-ID, wenn sie beim Generieren des JWT hinzugefügt wurde. Weitere Informationen zur Überprüfung eines JWT finden Sie auch unter "JSON-Webschlüsselsatz verwenden (JWKS)" unter JWT-Richtlinienübersicht. Weitere Informationen finden Sie unter Header-Parameter (Key ID). |
header.type |
Wird auf JWT festgelegt. |
header.name |
Der Wert des benannten Headers (Standard oder Zusätzlich). Eines der Elemente wird für jeden zusätzlichen Header im Header-Teil des JWT bestimmt. |
header-json |
Die Kopfzeile im JSON-Format. |
is_expired |
Richtig oder falsch? |
payload-claim-names |
Ein Array von Ansprüchen, vom JWT unterstützt. |
payload-json |
Nutzlast im JSON-Format.
|
seconds_remaining |
Anzahl der Sekunden bis zum Ablauf des Tokens. Ist das Token abgelaufen, ist diese Zahl negativ. |
time_remaining_formatted |
Die verbleibende Zeit bis zum Ablauf des Tokens als formatierter String. Beispiel: 00:59:59.926 |
valid |
Im Fall von VerifyJWT ist diese Variable "true", wenn die Signatur verifiziert wurde. Die aktuelle Zeit ist entsprechend vor Ablauf des Tokens bzw. nach dem Token-Wert "notBefore", sofern vorhanden. Ansonsten ist die Variable "false".
Im Fall von DecodeJWT ist die Variable nicht festgelegt. |
Fehlerreferenz
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.jwt.FailedToDecode |
401 | Occurs when the policy is unable to decode the JWT. The JWT may be malformed, invalid or otherwise not decodable. | build |
steps.jwt.FailedToResolveVariable |
401 | Occurs when the flow variable specified in the <Source> element of
the policy does not exist. |
|
steps.jwt.InvalidToken |
401 | Occurs when the flow variable specified in the <Source> element of
the policy is out of scope or can't be resolved. |
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidEmptyElement |
Occurs when the flow variable containing the JWT to be decoded is not specified in the
<Source> element of the policy.
|
build |
Fehlervariablen
Diese Variablen werden bei Laufzeitfehlern festgelegt. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen.
Variablen | Wo | Beispiel |
---|---|---|
fault.name="fault_name" |
fault_name ist der Name des Fehlers, der in der obigen Tabelle Laufzeitfehler aufgeführt ist. Der Fehlername ist der letzte Teil des Fehlercodes. | fault.name Matches "TokenExpired" |
JWT.failed |
Bei allen JWT-Richtlinien wird im Fall eines Fehlers dieselbe Variable festgelegt. | JWT.failed = true |
Beispiel für eine Fehlerantwort
Bei der Fehlerbehandlung besteht die Best Practice darin, den errorcode
-Teil der Fehlerantwort zu beachten. Verlassen Sie sich nicht auf den Text in faultstring
. Er kann sich ändern.
Beispiel für eine Fehlerregel
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>