GenerateJWT-Richtlinie

Sie sehen die Dokumentation zu Apigee Edge.
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.

Samples

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 und signiert das JWT digital. 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 Edge das JWT einschließlich der Anforderungen und signiert es 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 <Password> und <Id> sind optional.

* 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 Standardeinstellung Präsenz
name Der interne Name der Richtlinie. Folgende Zeichen sind im Namen zulässig: A-Z0-9._\-$ %. Die Edge-Verwaltungs-UI erzwingt jedoch zusätzliche Einschränkungen, z. B. das automatische Entfernen nicht alphanumerischer Zeichen.

Optional können Sie das Element <displayname></displayname> verwenden, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

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 true fest, damit die Ablaufausführung auch nach dem Fehlschlagen einer Richtlinie fortgesetzt wird.

false Optional
aktiviert Setzen Sie den Wert auf true, um die Richtlinie zu erzwingen.

Legen Sie false fest, um die Richtlinie zu "deaktivieren". Die Richtlinie wird nicht erzwungen, selbst wenn sie mit einem Ablauf verknüpft ist.

true Optional
async Dieses Attribut wurde verworfen. false Eingestellte Funktionen

<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.

Standardeinstellung
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.

Standardeinstellung
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.

Standardeinstellung
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.

Standardeinstellung 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:

  • ms = Millisekunden (Standard)
  • s = Sekunden
  • m = Minuten
  • h = Stunden
  • d = Tage

Beispiel: ExpiresIn=10d entspricht einem ExpiresIn von 864.000 Sekunden.

<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.

Standardeinstellung
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).

Standardeinstellung Falsch
Präsenz Optional
Typ Boolesch
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.

Standardeinstellung
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 lehnt eine Richtlinienkonfiguration, in der das Passwort als Klartext angegeben ist, als ungültig ab. Die Ablaufvariable muss das Präfix "private" haben. Beispiel: private.mypassword.

<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.

Standardeinstellung
Präsenz Zum Generieren eines JWT mithilfe des RS256-Algorithmus erforderlich.
Typ String
Zulässige Werte Eine Flussvariable mit einem String, der einen PEM-codierten privaten RSA-Schlüsselwert darstellt.

Hinweis: Die Ablaufvariable muss das Präfix "private" haben. Beispiel: private.mykey

<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 minimale Schlüsselstärke für die Algorithmen HS256/HS384/HS512. 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 Flussvariable, die sich auf einen String bezieht

Hinweis: Wenn eine Ablaufvariable vorhanden ist, muss sie das Präfix "private" haben. Beispiel: private.mysecret

<Subject>

<Subject>subject-string-here</Subject>
oder
<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.
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.
MissingNameForAdditionalClaim Wenn der Name der Anforderung nicht im untergeordneten Element <Claim> des Elements <AdditionalClaims> angegeben ist, schlägt die Bereitstellung fehl.
InvalidNameForAdditionalHeader Dieser Fehler tritt auf, wenn der Name der im untergeordneten Element <Claim> des <AdditionalClaims>-Elements verwendeten Anforderung entweder alg oder typ ist.
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.
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.
InvalidConfigurationForActionAndAlgorithm Wenn das Element <PrivateKey> mit HS-Family-Algorithmen oder das <SecretKey>-Element mit RSA-Family-Algorithmen verwendet wird, schlägt die Bereitstellung fehl.
InvalidValueForElement Wenn der im Element <Algorithm> angegebene Wert kein unterstützter Wert ist, schlägt die Bereitstellung fehl.
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.
InvalidKeyConfiguration Wenn das untergeordnete Element <Value> nicht in den Elementen <PrivateKey> oder <SecretKey> definiert ist, schlägt die Bereitstellung fehl.
EmptyElementForKeyConfiguration Wenn das ref-Attribut des untergeordneten Elements <Value> der Elemente <PrivateKey> oder <SecretKey> leer oder nicht angegeben ist, schlägt die Bereitstellung fehl.
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.
InvalidSecretInConfig Dieser Fehler tritt auf, wenn das untergeordnete Element <Value> der <PrivateKey>- oder <SecretKey>-Elemente nicht das private Präfix (private.) enthält.
InvalidTimeFormat Wenn der im Element <NotBefore> angegebene Wert kein unterstütztes Format verwendet, schlägt die Bereitstellung fehl.

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

JWT-Richtlinienfehlercodes

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>