<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Was
Generiert ein signiertes JWT mit einem konfigurierbaren Satz von Anforderungen. Das JWT kann dann an Clients zurückgegeben, an Backend-Ziele übertragen oder auf andere Weise genutzt werden. Eine detaillierte Einführung finden Sie unter Übersicht über JWS- und JWT-Richtlinien.
Video
In diesem kurzen Video erfahren Sie, wie Sie ein signiertes JWT generieren.
Beispiele
- Ein mit dem HS256-Algorithmus signiertes JWT generieren
- Ein mit dem RS256-Algorithmus signiertes JWT generieren
Ein mit dem HS256-Algorithmus signiertes JWT generieren
Diese Beispielrichtlinie generiert ein neues JWT und signiert es unter Einsatz des HS256-Algorithmus. HS256 stützt sich auf ein gemeinsames Secret für die Signatur und die Verifizierung der Signatur.
Wenn diese Richtlinienaktion ausgelöst wird, codiert Edge den JWT-Header und die Nutzlast dann digital. signiert das JWT. Das Video oben zeigt ein umfassendes Beispiel, in dem auch beschrieben wird, wie Sie eine Anfrage an die Richtlinie senden.
Die Richtlinienkonfiguration erstellt in diesem Fall ein JWT mit einem Standardanforderungssatz, wie in der JWT-Spezifikation definiert, einschließlich einer Ablaufzeit von 1 Stunde sowie einer zusätzlichen Anforderung. Sie können beliebig viele zusätzliche Anforderungen hinzufügen. Details zu den Anforderungen und Optionen für die einzelnen Elemente in dieser Beispielrichtlinie finden Sie in der Elementreferenz.
<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <ExpiresIn>1h</ExpiresIn> <Subject>monty-pythons-flying-circus</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>fans</Audience> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
Das resultierende JWT hat dann folgenden Header…
{ "typ" : "JWT", "alg" : "HS256", "kid" : "1918290" }
… und eine Nutzlast mit Inhalten wie diesem:
{ "sub" : "monty-pythons-flying-circus", "iss" : "urn://apigee-edge-JWT-policy-test", "aud" : "show", "iat" : 1506553019, "exp" : 1506556619, "jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37", "show": "And now for something completely different." }
Der Wert der Anforderungen iat, exp und jti variiert.
Ein mit dem RS256-Algorithmus signiertes JWT generieren
Diese Beispielrichtlinie generiert ein neues JWT und signiert es unter Einsatz des RS256-Algorithmus. Das Generieren einer RS256-Signatur benötigt einen privaten RSA-Schlüssel, der in PEM-codierter Form bereitgestellt werden muss. Das Video oben zeigt ein umfassendes Beispiel, in dem auch beschrieben wird, wie Sie eine Anfrage an die Richtlinie senden.
Wenn diese Richtlinienaktion ausgelöst wird, codiert und signiert Edge das JWT, einschließlich der Anforderungen, digital. Informationen zu den Teilen eines JWT und deren Verschlüsselung und Signatur finden Sie unter RFC7519.
<GenerateJWT name="JWT-Generate-RS256"> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> <Subject>apigee-seattle-hatrack-montage</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience> <ExpiresIn>60m</ExpiresIn> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
Schlüsselelemente festlegen
Welche Elemente Sie verwenden, um den Schlüssel zur Generierung der JWS anzugeben, hängt vom ausgewählten Algorithmus ab, wie in der folgenden Tabelle dargestellt:
Algorithmus | Schlüsselelemente | |
---|---|---|
HS{256/384/512}* | <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> |
|
RS/PS/ES{256/384/512}* | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> Die Elemente |
|
* Weitere Informationen zu den Schlüsselanforderungen finden Sie unter Signaturverschlüsselungsalgorithmen. |
Elementreferenz für das JWT generieren
Die Richtlinienreferenz beschreibt die Elemente und Attribute der Richtlinie zur JWT-Generierung.
Hinweis: Die Konfiguration variiert je nach verwendetem Verschlüsselungsalgorithmus. In den Beispielen finden Sie Beispiele für Konfigurationen von bestimmten Anwendungsfällen.
Attribute, die auf das oberste Element angewendet werden
<GenerateJWT 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 |
<Algorithm>
<Algorithm>algorithm-here</Algorithm>
Gibt den Verschlüsselungsalgorithmus zum Signieren des Tokens an.
Default | – |
Präsenz | Erforderlich |
Typ | String |
Zulässige Werte | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<Audience>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
Die Richtlinie generiert ein JWT, das eine aud-Anforderung mit dem angegebenen Wert enthält. Diese Anforderung identifiziert die Empfänger, für die das JWT bestimmt ist. Dies ist eine der in RFC7519 genannten registrierten Anforderungen.
Standard | – |
Präsenz | Optional |
Typ | Array (eine Liste mit durch Kommas getrennten Werten) |
Zulässige Werte | Alles, was die Zielgruppe identifiziert. |
<AdditionalClaims/Claim>
<AdditionalClaims> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> </AdditionalClaims> or: <AdditionalClaims ref='claim_payload'/>
Ermöglicht die Angabe zusätzlicher Name/Wert-Paare für Anforderungen in der Nutzlast des JWT. Sie können die Anforderung explizit als String, Zahl, booleschen Wert, Zuordnung oder Array angeben. Ein Map ist einfach eine Reihe von Name/Wert-Paaren.
Default | – |
Präsenz | Optional |
Zulässige Werte | Jeder Wert, den Sie für eine zusätzliche Anforderung verwenden möchten. Sie können die Anforderung explizit als String, Zahl, booleschen Wert, Zuordnung oder Array angeben. |
Das Element <Claim>
verwendet die folgenden Attribute:
- name – (erforderlich) Der Name der Anforderung.
- ref – (optional) Der Name einer Ablaufvariable. Falls vorhanden, verwendet die Richtlinie den Wert dieser Variable als Anforderung. Wenn sowohl ein ref-Attribut als auch ein expliziter Anforderungswert angegeben sind, ist der explizite Wert der Standardwert. Er wird verwendet, wenn die referenzierte Ablaufvariable nicht aufgelöst wird.
- type – (optional) Kann String (Standard), Zahl, boolescher Wert oder Map sein
- array – (optional) Legen Sie true fest, um anzugeben, dass der Wert ein Typarray ist. Standardeinstellung: false.
Wenn Sie das Element <Claim>
hinzufügen, werden die Anforderungsnamen beim Konfigurieren der Richtlinie statisch festgelegt. Alternativ können Sie ein JSON-Objekt übergeben, um die Anforderungsnamen anzugeben.
Da das JSON-Objekt als Variable übergeben wird, werden die Anforderungsnamen im generierten JWT zur Laufzeit bestimmt.
Beispiel:
<AdditionalClaims ref='json_claims'/>
Die Variable json_claims
enthält ein JSON-Objekt im folgenden Format:
{ "sub" : "person@example.com", "iss" : "urn://secure-issuer@example.com", "non-registered-claim" : { "This-is-a-thing" : 817, "https://example.com/foobar" : { "p": 42, "q": false } } }
Das generierte JWT enthält alle Anforderungen im JSON-Objekt.
<AdditionalHeaders/Claim>
<AdditionalHeaders> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> <Claim name='claim4' ref='variable-name' type='string' array='true'/> </AdditionalHeaders>
Fügt die zusätzlichen Paare aus Anforderungsname/Wert in den Header für die JWS ein.
Default | – |
Präsenz | Optional |
Zulässige Werte | Jeder Wert, den Sie für eine zusätzliche Anforderung verwenden möchten. Sie können die Anforderung explizit als String, Zahl, booleschen Wert, Zuordnung oder Array angeben. |
Das Element <Claim>
verwendet die folgenden Attribute:
- name – (erforderlich) Der Name der Anforderung.
- ref – (optional) Der Name einer Ablaufvariable. Falls vorhanden, verwendet die Richtlinie den Wert dieser Variable als Anforderung. Wenn sowohl ein ref-Attribut als auch ein expliziter Anforderungswert angegeben sind, ist der explizite Wert der Standardwert. Er wird verwendet, wenn die referenzierte Ablaufvariable nicht aufgelöst wird.
- type – (optional) Kann String (Standard), Zahl, boolescher Wert oder Map sein
- array – (optional) Legen Sie true fest, um anzugeben, dass der Wert ein Typarray ist. Standardeinstellung: false.
<CriticalHeaders>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
Fügt dem JWT-Header den kritischen Header crit hinzu. Der Header crit ist ein Array aus Headernamen, die bekannt sein und vom JWT-Empfänger erkannt werden müssen. Beispiel:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
Zur Laufzeit untersucht die VerifyJWT-Richtlinie den crit-Header.
Für jedes im crit-Header aufgeführte Element wird überprüft, ob das Element <KnownHeaders>
der VerifyJWT-Richtlinie auch diesen Header enthält. Jeder Header, den die Richtlinie in crit findet, aber nicht in der <KnownHeaders>
-Liste aufgeführt ist, lässt die VerifyJWT-Richtlinie fehlschlagen.
Standard | – |
Präsenz | Optional |
Typ | Kommagetrenntes Stringarray |
Zulässige Werte | Entweder ein Array oder der Name einer Variable, die das Array enthält. |
<CustomClaims>
Hinweis: Derzeit wird ein CustomClaims-Element eingefügt, wenn Sie eine neue GenerateJWT-Richtlinie über die UI hinzufügen. Dieses Element ist nicht funktionsfähig und wird ignoriert. Das richtige zu verwendende Element ist <AdditionalClaims>. Die Benutzeroberfläche wird aktualisiert, sodass später die richtigen Elemente eingefügt werden.
<ExpiresIn>
<ExpiresIn>time-value-here</ExpiresIn>
Gibt die Lebensdauer des JWT in Millisekunden, Sekunden, Minuten, Stunden oder Tagen an.
Standard | N/A |
Präsenz | Optional |
Typ | Ganzzahl |
Zulässige Werte |
Ein Wert oder ein Verweis auf eine Ablaufvariable, die den Wert enthält. Zeiteinheiten können so angegeben werden:
Beispiel: |
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
Generiert ein JWT mit der spezifischen jti-Anforderung. Wenn der Textwert und das ref-Attribut beide leer sind, generiert die Richtlinie einen jti mit einer zufälligen UUID. Die Anforderung der JWT-ID (jti) ist eine eindeutige Kennung für das JWT. Weitere Informationen über jti finden Sie unter RFC7519.
Standard | – |
Präsenz | Optional |
Typ | String oder Verweis. |
Zulässige Werte | Ein String oder der Name einer Ablaufvariablen, die die ID enthält. |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
Setzen Sie diesen Wert auf "false", wenn die Richtlinie einen Fehler ausgibt, falls eine in der Richtlinie angegebene Variable, auf die verwiesen wird, nicht auflösbar ist. Setzen Sie diesen Wert auf "true", um alle nicht aufgelösten Variablen als leeren String zu behandeln (null).
Standard | False |
Präsenz | Optional |
Typ | Boolean |
Zulässige Werte | "true" oder "false" |
<Issuer>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
Die Richtlinie generiert ein JWT, das eine Anforderung mit dem Namen iss, mit einem auf den angegebenen Wert gesetzten Wert enthält. Eine Anforderung, die den Aussteller des JWT identifiziert. Dies ist eine der registrierten Anforderungen, die in RFC7519 erwähnt werden.
Standard | – |
Präsenz | Optional |
Typ | String oder Verweis |
Zulässige Werte | Alle |
<NotBefore>
<!-- Specify an absolute time. --> <NotBefore>2017-08-14T11:00:21-07:00</NotBefore> -or- <!-- Specify a time relative to when the token is generated. --> <NotBefore>6h</NotBefore>
Gibt die Uhrzeit an, zu der das Token gültig wird. Das Token ist bis zur angegebenen Zeit ungültig. Sie können entweder einen absoluten Zeitwert oder eine Zeit relativ zum Zeitpunkt der Generierung des Tokens angeben.
Standard | – |
Präsenz | Optional |
Typ | String |
Zulässige Werte | Siehe unten. |
Gültige Zeitwerte für das "NotBefore"-Element für absolute Zeitwerte
Name | Format | Beispiel |
sortierbar | yyyy-MM-dd'T'HH:mm:ss.SSSZ |
2017-08-14T11:00:21.269-0700 |
RFC 1123 | EEE, dd MMM yyyy HH:mm:ss zzz |
Mon, 14 Aug 2017 11:00:21 PDT |
RFC 850 | EEEE, dd-MMM-yy HH:mm:ss zzz |
Monday, 14-Aug-17 11:00:21 PDT |
ANCI-C | EEE MMM d HH:mm:ss yyyy |
Mon Aug 14 11:00:21 2017 |
Geben Sie für relative Zeitwerte eine Ganzzahl und einen Zeitraum an. Beispiel:
- 10s
- 60m
- 12h
<OutputVariable>
<OutputVariable>jwt-variable</OutputVariable>
Gibt an, wo das von dieser Richtlinie generierte JWS platziert werden soll. Standardmäßig wird es in die Ablaufvariable jwt.POLICYNAME.generated_jwt
eingefügt.
Standard | jwt.POLICYNAME.generated_jwt |
Präsenz | Optional |
Typ | String (Name einer Ablaufvariablen) |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
Gibt die Schlüssel-ID (Kid) an, die im JWT-Header enthalten sein muss. Nur verwenden, wenn der Algorithmus RS256/RS384/RS512, PS256/PS384/PS512 oder ES256/ES384/ES512 ist.
Standard | – |
Präsenz | Optional |
Typ | String |
Zulässige Werte | Eine Ablaufvariable oder ein String |
<PrivateKey/Password>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
Falls erforderlich, geben Sie das Passwort an, das die Richtlinie zum Entschlüsseln des privaten Schlüssels verwenden soll. Verwenden Sie das Attribut ref, um den Schlüssel in einer Ablaufvariable zu übergeben. Nur verwenden, wenn der Algorithmus RS256/RS384/RS512, PS256/PS384/PS512 oder ES256/ES384/ES512 ist.
Standard | – |
Präsenz | Optional |
Typ | String |
Zulässige Werte | Eine Referenz für eine Ablaufvariable. Hinweis: Sie müssen eine Ablaufvariable angeben. Edge wird als ungültig abgelehnt
Richtlinienkonfiguration, bei der das Passwort als Klartext angegeben wird. Die Ablaufvariable muss das Präfix "private" haben. Beispiel: |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
Gibt einen PEM-codierten privaten Schlüssel an, der zum Signieren des JWT verwendet wird. Verwenden Sie das Attribut ref, um den Schlüssel in einer Ablaufvariable zu übergeben. Nur verwenden, wenn der Algorithmus RS256/RS384/RS512, PS256/PS384/PS512 oder ES256/ES384/ES512 ist.
Standard | – |
Präsenz | Zum Generieren eines JWT mithilfe des RS256-Algorithmus erforderlich. |
Typ | String |
Zulässige Werte | Eine Ablaufvariable mit einem String, der einen privaten PEM-codierten RSA-Schlüsselwert darstellt. Hinweis: Die Ablaufvariable muss das Präfix "private" haben. Beispiel: |
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
Gibt die Schlüssel-ID (kid) an, die in den JWT-Header eines mit einem HMAC-Algorithmus signierten JWT einzufügen ist. Nur verwenden, wenn der folgenden Algorithmen verwendet wurde: HS256/HS384/HS512.
Standard | – |
Präsenz | Optional |
Typ | String |
Zulässige Werte | Eine Ablaufvariable oder ein String |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
Stellt den geheimen Schlüssel zum Verifizieren oder Signieren von Tokens mit einem HMAC-Algorithmus bereit. Nur verwenden, wenn der folgenden Algorithmen verwendet wurde: HS256/HS384/HS512 Verwenden Sie das Attribut ref, um den Schlüssel in einer Ablaufvariable zu übergeben.
Edge erzwingt eine Mindestschlüsselstärke für die HS256/HS384/HS512-Algorithmen. Die Mindestschlüssellänge für HS256 beträgt 32 Byte, für HS384 48 Byte und für HS512 64 Byte. Die Verwendung eines Schlüssels mit geringerer Stärke führt zu einem Laufzeitfehler.
Standard | – |
Präsenz | Erforderlich für HMAC-Algorithmen. |
Typ | String |
Zulässige Werte | Eine Ablaufvariable, die auf einen String verweist. Hinweis: Wenn eine Ablaufvariable vorhanden ist, muss sie das Präfix "private" haben. Beispiel: |
<Subject>
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
Beispiel:
<Subject ref="apigee.developer.email"/>
Die Richtlinie generiert ein JWT mit einem sub-Anspruch, der auf den angegebenen Wert gesetzt ist. Mit diesem Anspruch wird eine Aussage über das Subjekt des JWT identifiziert oder gemacht. Dies ist einer der Standardansprüche, die in RFC7519 erwähnt werden.
Standard | – |
Präsenz | Optional |
Typ | String |
Zulässige Werte | Jeder Wert, der eindeutig ein auf einen Wert verweisendes Subjekt oder eine solche Ablaufvariable identifiziert. |
Ablaufvariablen
Die Richtlinie zum Generieren von JWTs legt keine Ablaufvariablen fest.
Fehlerreferenz
In diesem Abschnitt werden die Fehlercodes und Fehlermeldungen beschrieben, die zurückgegeben werden, sowie die Fehlervariablen, die von Edge festgelegt werden, wenn diese Richtlinie einen Fehler auslöst. Diese Informationen sind wichtig, wenn Sie Fehlerregeln zur Verarbeitung von Fehlern entwickeln. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.
Laufzeitfehler
Diese Fehler können bei Ausführung der Richtlinie auftreten.
Fehlercode | HTTP-Status | Tritt auf, wenn Folgendes eintritt |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | Tritt auf, wenn die Prüfungsrichtlinie mehrere Algorithmen nutzt. |
steps.jwt.AlgorithmMismatch |
401 | Der in der Generierungsrichtlinie angegebene Algorithmus stimmte nicht mit dem in der Verifizierungsrichtlinie erwarteten Algorithmus überein. Die angegebenen Algorithmen müssen übereinstimmen. |
steps.jwt.FailedToDecode |
401 | Die Richtlinie konnte das JWT nicht decodieren. Das JWT ist möglicherweise beschädigt. |
steps.jwt.GenerationFailed |
401 | Die Richtlinie konnte das JWT nicht generieren. |
steps.jwt.InsufficientKeyLength |
401 | Für einen Schlüssel mit weniger als 32 Byte beim HS256-Algorithmus, weniger als 48 Byte beim HS386 Algorithmus und weniger als 64 Byte beim HS512-Algorithmus. |
steps.jwt.InvalidClaim |
401 | Bei einem fehlenden Anspruch oder nicht übereinstimmenden Ansprüchen oder einem fehlenden Header oder Header. |
steps.jwt.InvalidCurve |
401 | Die vom Schlüssel angegebene Kurve ist für den Elliptic-Curve-Algorithmus ungültig. |
steps.jwt.InvalidJsonFormat |
401 | Ungültiger JSON-Code im Header oder der Nutzlast gefunden. |
steps.jwt.InvalidToken |
401 | Dieser Fehler tritt auf, wenn die JWT-Signaturprüfung fehlschlägt. |
steps.jwt.JwtAudienceMismatch |
401 | Der Zielgruppenanspruch ist bei der Tokenprüfung fehlgeschlagen. |
steps.jwt.JwtIssuerMismatch |
401 | Der Ausstelleranspruch ist bei der Tokenprüfung fehlgeschlagen. |
steps.jwt.JwtSubjectMismatch |
401 | Der Betreffanspruch ist bei der Tokenprüfung fehlgeschlagen. |
steps.jwt.KeyIdMissing |
401 | Die Verifizierungsrichtlinie verwendet einen JWKS als Quelle für öffentliche Schlüssel, das signierte JWT enthält jedoch kein kid -Attribut im Header. |
steps.jwt.KeyParsingFailed |
401 | Der öffentliche Schlüssel konnte anhand der angegebenen Schlüsselinformationen nicht geparst werden. |
steps.jwt.NoAlgorithmFoundInHeader |
401 | Tritt auf, wenn das JWT keinen Algorithmus-Header enthält. |
steps.jwt.NoMatchingPublicKey |
401 | Die Verifizierungsrichtlinie verwendet einen JWKS als Quelle für öffentliche Schlüssel, aber kid im signierten JWT ist nicht in JWKS aufgeführt. |
steps.jwt.SigningFailed |
401 | In GenerateJWT, für Schlüssel, die kleiner als die Mindestgröße für den HS384- oder HS512-Algorithmus sind |
steps.jwt.TokenExpired |
401 | Die Richtlinie versucht, ein abgelaufenes Token zu bestätigen. |
steps.jwt.TokenNotYetValid |
401 | Das Token ist noch nicht gültig. |
steps.jwt.UnhandledCriticalHeader |
401 | Ein Header, der von der JWT-Richtlinie im Header crit gefunden wurde, ist nicht in KnownHeaders aufgeführt. |
steps.jwt.UnknownException |
401 | Es ist eine unbekannte Ausnahme aufgetreten. |
steps.jwt.WrongKeyType |
401 | Falscher Schlüsseltyp angegeben. Wenn Sie beispielsweise einen RSA-Schlüssel für einen Elliptic Curve-Algorithmus oder einen Kurvenschlüssel für einen RSA-Algorithmus angeben. |
Bereitstellungsfehler
Diese Fehler können auftreten, wenn Sie einen Proxy bereitstellen, der diese Richtlinie enthält.
Fehlername | Ursache | Problembehebung |
---|---|---|
InvalidNameForAdditionalClaim |
Die Bereitstellung schlägt fehl, wenn die im untergeordneten Element <Claim> des Elements <AdditionalClaims> verwendete Anforderung einer der folgenden registrierten Namen ist: kid , iss , sub , aud , iat , exp , nbf oder jti .
|
build |
InvalidTypeForAdditionalClaim |
Wenn die im untergeordneten Element <Claim> des <AdditionalClaims> -Elements verwendete Anforderung nicht vom Typ string , number , boolean oder map ist, schlägt die Bereitstellung fehl.
|
build |
MissingNameForAdditionalClaim |
Wenn der Name der Anforderung nicht im untergeordneten Element <Claim> des Elements <AdditionalClaims> angegeben ist, schlägt die Bereitstellung fehl.
|
build |
InvalidNameForAdditionalHeader |
Dieser Fehler tritt auf, wenn der Name der im untergeordneten Element <Claim> des <AdditionalClaims> -Elements verwendeten Anforderung entweder alg oder typ ist.
|
build |
InvalidTypeForAdditionalHeader |
Wenn der im untergeordneten Element <Claim> des <AdditionalClaims> -Elements verwendete Anforderungstyp nicht vom Typ string , number , boolean oder map ist, schlägt die Bereitstellung fehl.
|
build |
InvalidValueOfArrayAttribute |
Dieser Fehler tritt auf, wenn der Wert des Array-Attributs im untergeordneten Element <Claim> des <AdditionalClaims> -Elements nicht auf true oder false festgelegt ist.
|
build |
InvalidConfigurationForActionAndAlgorithm |
Wenn das Element <PrivateKey> mit HS-Family-Algorithmen oder das <SecretKey> -Element mit RSA-Family-Algorithmen verwendet wird, schlägt die Bereitstellung fehl.
|
build |
InvalidValueForElement |
Wenn der im Element <Algorithm> angegebene Wert kein unterstützter Wert ist, schlägt die Bereitstellung fehl.
|
build |
MissingConfigurationElement |
Dieser Fehler tritt auf, wenn das Element <PrivateKey> nicht mit RSA-Familienalgorithmen oder das Element <SecretKey> nicht mit Algorithmen der HS-Familie verwendet wird.
|
build |
InvalidKeyConfiguration |
Wenn das untergeordnete Element <Value> nicht in den Elementen <PrivateKey> oder <SecretKey> definiert ist, schlägt die Bereitstellung fehl.
|
build |
EmptyElementForKeyConfiguration |
Wenn das ref-Attribut des untergeordneten Elements <Value> der Elemente <PrivateKey> oder <SecretKey> leer oder nicht angegeben ist, schlägt die Bereitstellung fehl.
|
build |
InvalidVariableNameForSecret |
Dieser Fehler tritt auf, wenn der im ref-Attribut des untergeordneten Elements <Value> der Elemente <PrivateKey> oder <SecretKey> angegebene Flussvariablenname nicht das private Präfix (private.) enthält.
|
build |
InvalidSecretInConfig |
Dieser Fehler tritt auf, wenn das untergeordnete Element <Value> der <PrivateKey> - oder <SecretKey> -Elemente nicht das private Präfix (private.) enthält.
|
build |
InvalidTimeFormat |
Wenn der im Element <NotBefore> angegebene Wert kein unterstütztes Format verwendet, schlägt die Bereitstellung fehl.
|
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>