Criterio GenerateJWT

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Cosa

Genera un JWT firmato, con un insieme di attestazioni configurabili. Il JWT può quindi essere restituito trasmessi a destinazioni di backend o utilizzati in altri modi. Per un'introduzione dettagliata, consulta la panoramica delle norme JWS e JWT.

Video

Guarda un breve video per scoprire come generare un JWT firmato.

Esempi

Genera un JWT firmato con HS256. algoritmo

Questo criterio di esempio genera un nuovo JWT e lo firma utilizzando l'algoritmo HS256. Si basa su HS256 su un secret condiviso sia per la firma che per la verifica della firma.

Quando viene attivata questa azione del criterio, Edge codifica l'intestazione JWT e il payload, quindi digitalmente firma il JWT. Guarda il video riportato sopra per un esempio completo, incluso come presentare una richiesta per violazione delle norme.

La configurazione dei criteri qui creerà un JWT con un insieme di attestazioni standard come definito la specifica JWT, inclusa una scadenza di 1 ora, nonché una richiesta aggiuntiva. Puoi includere tutte le rivendicazioni aggiuntive che desideri. Consulta la sezione di riferimento dell'elemento per maggiori dettagli in requisiti e opzioni per ogni elemento di questa norma di esempio.

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

Il JWT risultante avrà questa intestazione...

{
  "typ" : "JWT", 
  "alg" : "HS256",
  "kid" : "1918290"
}

... e avranno un payload con contenuti simili a questo:

{ 
  "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."
}

Il valore delle rivendicazioni iat, exp e jti può variare.

Genera un JWT firmato con RS256 algoritmo

Questo criterio di esempio genera un nuovo JWT e lo firma utilizzando l'algoritmo RS256. La generazione di un La firma RS256 si basa su una chiave privata RSA, che deve essere fornita in formato con codifica PEM. Guarda il video riportato sopra per un esempio completo, incluso come presentare una richiesta per violazione delle norme.

Quando viene attivata questa azione del criterio, Edge codifica e firma digitalmente il JWT, incluse le attestazioni. Per saperne di più sulle parti di un JWT e su come vengono criptate e firmate, consulta 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>

Impostare gli elementi chiave

Gli elementi che utilizzi per specificare la chiave usata per generare il JWT dipendono dall'algoritmo scelto, come illustrato nella tabella seguente:

Algoritmo Elementi principali
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>

Gli elementi <Password> e <Id> sono facoltativi.

* Per ulteriori informazioni sui requisiti principali, consulta Informazioni sugli algoritmi di crittografia della firma.

Riferimento elemento per Genera JWT

La guida di riferimento al criterio descrive gli elementi e gli attributi del criterio Genera JWT.

Nota:la configurazione varierà leggermente a seconda della crittografia. l'algoritmo utilizzato. Fai riferimento agli esempi per esempi che dimostrano configurazioni per casi d'uso specifici.

Attributi che applica all'elemento di primo livello

<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">

I seguenti attributi sono comuni a tutti gli elementi principali del criterio.

Attributo Descrizione Predefinita Presenza
nome Il nome interno del criterio. I caratteri utilizzabili nel nome sono limitati a: A-Z0-9._\-$ %. Tuttavia, l'interfaccia utente di gestione perimetrale applica come la rimozione automatica di caratteri non alfanumerici.

Se vuoi, puoi usare l'elemento <displayname></displayname> per etichetta il criterio nell'editor proxy dell'interfaccia utente di gestione con un linguaggio naturale diverso nome.

N/D Obbligatorio
continueOnError Imposta il valore su false per restituire un errore quando un criterio non viene eseguito. Si tratta di un comportamento previsto per la maggior parte dei criteri.

Imposta su true per fare in modo che l'esecuzione del flusso continui anche dopo un criterio non riesce.

falso Facoltativo
abilitata Imposta il valore su true per applicare il criterio.

Imposta su false per "disattivare" il criterio. Il criterio non verrà applicato in modo forzato anche se rimane collegato a un flusso.

true Facoltativo
asinc Questo attributo è obsoleto. falso Deprecato

&lt;DisplayName&gt;

<DisplayName>Policy Display Name</DisplayName>

Da utilizzare, in aggiunta all'attributo name, per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

Predefinita Se ometti questo elemento, viene utilizzato il valore dell'attributo nome del criterio.
Presenza Facoltativo
Tipo Stringa

&lt;Algorithm&gt;

<Algorithm>algorithm-here</Algorithm>

Specifica l'algoritmo di crittografia per firmare il token.

Predefinita N/D
Presenza Obbligatorio
Tipo Stringa
Valori validi HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512

&lt;Audience&gt;

<Audience>audience-here</Audience>

or:

<Audience ref='variable_containing_audience'/>

Il criterio genera un JWT contenente un'attestazione aud impostata sul valore specificato valore. Questa dichiarazione identifica i destinatari a cui è destinato il JWT. Questo è uno dei rivendicazioni registrate menzionate in RFC7519.

Predefinita N/D
Presenza Facoltativo
Tipo Array (un elenco di valori separati da virgole)
Valori validi Qualsiasi elemento che identifichi il pubblico.

&lt;AdditionalClaims/Claim&gt;

<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'/>

Ti consente di specificare ulteriori coppie nome/valore di rivendicazione nel payload del JWT. Puoi specificare la dichiarazione in modo esplicito come stringa, un numero, un valore booleano, una mappa o un array. Una mappa è semplicemente un insieme di nomi/valori in coppia.

Predefinita N/D
Presenza Facoltativo
Valori validi Qualsiasi valore che vuoi utilizzare per una rivendicazione aggiuntiva. Puoi specificare la dichiarazione in modo esplicito come stringa, un numero, un valore booleano, una mappa o un array.

L'elemento <Claim> utilizza i seguenti attributi:

  • name - (Obbligatorio) Il nome della rivendicazione.
  • ref - (Facoltativo) Il nome di una variabile di flusso. Se presente, il criterio utilizzerà il valore di questo come la dichiarazione. Se vengono specificati sia un attributo ref sia un valore di dichiarazione esplicito, il valore esplicito è il valore predefinito e viene utilizzato se la variabile del flusso di riferimento non è risolta.
  • type: (facoltativo) uno dei seguenti: string (predefinito), numero, booleano o mappa
  • array - (Facoltativo) Imposta su true per indicare se il valore è un array di tipi. Valore predefinito: false.

Se includi l'elemento <Claim>, i nomi delle rivendicazioni vengono impostati in modo statico quando e configurare il criterio. In alternativa, puoi passare un oggetto JSON per specificare i nomi delle attestazioni. Poiché l'oggetto JSON viene passato come variabile, i nomi delle attestazioni nel JWT generato vengono determinati in fase di runtime.

Ad esempio:

<AdditionalClaims ref='json_claims'/>

Dove la variabile json_claims contiene un oggetto JSON nel formato:

{
  "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 }
  }
}

Il JWT generato include tutte le attestazioni nell'oggetto JSON.

&lt;AdditionalHeaders/Claim&gt;

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

Consente di inserire le altre coppie nome/valore della rivendicazione nell'intestazione del JWT.

Predefinita N/D
Presenza Facoltativo
Valori validi Qualsiasi valore che vuoi utilizzare per una rivendicazione aggiuntiva. Puoi specificare la dichiarazione in modo esplicito come stringa, un numero, un valore booleano, una mappa o un array.

L'elemento <Claim> utilizza i seguenti attributi:

  • name - (Obbligatorio) Il nome della rivendicazione.
  • ref - (Facoltativo) Il nome di una variabile di flusso. Se presente, il criterio utilizzerà il valore di questo come la dichiarazione. Se vengono specificati sia un attributo ref sia un valore di dichiarazione esplicito, il valore esplicito è il valore predefinito e viene utilizzato se la variabile del flusso di riferimento non è risolta.
  • type: (facoltativo) uno dei seguenti: string (predefinito), numero, booleano o mappa
  • array - (Facoltativo) Imposta su true per indicare se il valore è un array di tipi. Valore predefinito: false.

&lt;CriticalHeaders&gt;

<CriticalHeaders>a,b,c</CriticalHeaders>

or:

<CriticalHeaders ref=variable_containing_headers/>

Aggiunge l'intestazione critica, crit, all'intestazione JWT. Intestazione crit è un array di nomi di intestazione che devono essere noti e riconosciuti dal ricevitore JWT. Ad esempio:

{
  “typ: “...”,
  “alg” : “...”,
  “crit” : [ “a”, “b”, “c” ],
}

In fase di runtime, il criterio VerifyJWT esamina l'intestazione crit. Per ogni elemento elencato nell'intestazione crit, viene verificato che l'elemento <KnownHeaders> del criterio VerifyJWT elenca anche quell'intestazione. Qualsiasi intestazione trovata dal criterio VerifyJWT in crit che non è elencato anche in <KnownHeaders>, causa l'errore del criterio VerifyJWT.

Predefinita N/D
Presenza Facoltativo
Tipo Matrice di stringhe separate da virgole
Valori validi Una matrice o il nome di una variabile che contiene l'array.

&lt;CustomClaims&gt;

Nota: al momento, viene inserito un elemento CustomClaim quando aggiungi una nuova il criterio GeneraJWT tramite l'interfaccia utente. Questo elemento non è funzionale e viene ignorato. Il corretto invece è &lt;AdditionalClaims&gt;. L'interfaccia utente aggiornarli per inserire gli elementi corretti in un secondo momento.

&lt;ExpiresIn&gt;

<ExpiresIn>time-value-here</ExpiresIn>

Specifica la durata del JWT in millisecondi, secondi, minuti, ore o giorni.

Predefinita N/A
Presenza Facoltativo
Tipo Numero intero
Valori validi

Un valore o un riferimento a una variabile di flusso contenente il valore. Le unità di tempo possono essere specificato come segue:

  • ms = millisecondi (predefinito)
  • s = secondi
  • m = minuti
  • h = ore
  • d = giorni

Ad esempio, ExpiresIn=10d equivale a un ExpiresIn di 864.000.

&lt;Id&gt;

<Id>explicit-jti-value-here</Id>
 -or-
<Id ref='variable-name-here'/>
 -or-
<Id/>

Genera un JWT con la specifica dichiarazione jti. Quando il valore text e l'attributo ref sono entrambi vuoto, il criterio genererà un jti contenente un UUID casuale. L'attestazione dell'ID JWT (jti) è un identificatore univoco del JWT. Per ulteriori informazioni su jti, consulta RFC7519.

Predefinita N/D
Presenza Facoltativo
Tipo Stringa o riferimento.
Valori validi Una stringa o il nome di una variabile di flusso contenente l'ID.

&lt;IgnoreUnresolvedVariables&gt;

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

Imposta il valore false se vuoi che il criterio generi un errore quando viene specificata una variabile di riferimento. del criterio non è risolvibile. Imposta il valore su true per trattare le variabili irrisolvibili come stringhe vuote (nullo).

Predefinita Falso
Presenza Facoltativo
Tipo Booleano
Valori validi true o false

&lt;Issuer&gt;

<Issuer ref='variable-name-here'/>
<Issuer>issuer-string-here</Issuer>

Il criterio genera un JWT contenente un'attestazione denominata iss,con un valore impostato al valore specificato. Una dichiarazione che identifica l'emittente del JWT. Questo è uno dei insieme registrato di rivendicazioni menzionate in RFC7519.

Predefinita N/D
Presenza Facoltativo
Tipo Stringa o riferimento
Valori validi Qualsiasi

&lt;NotBefore&gt;

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

Specifica l'ora in cui il token diventa valido. Il token non è valido fino all'ora specificata. Puoi specificare un valore di tempo assoluto o un'ora relativa a quando viene generato il token.

Predefinita N/D
Presenza Facoltativo
Tipo Stringa
Valori validi Consulta quanto riportato di seguito.

Valori di tempo validi per l'elemento NotBefore per valori di tempo assoluti

Nome Formato Esempio
ordinabile 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 Lun 14 ago 2017 11:00:21 PDT
RFC 850 EEEE, dd-MMM-yy HH:mm:ss zzz Lunedì, 14-ago-17 11:00:21 PDT
ANCI-C EEE MMM d HH:mm:ss yyyy Lun 14 ago 11:00:21 2017

Per i valori di tempo relativi, specifica un numero intero e un periodo di tempo, ad esempio:

  • 10 sec
  • 60 min
  • 12 ore

&lt;OutputVariable&gt;

<OutputVariable>jwt-variable</OutputVariable>

Specifica dove posizionare il JWT generato da questo criterio. Per impostazione predefinita, viene posizionata la variabile di flusso jwt.POLICYNAME.generated_jwt.

Predefinita jwt.POLICYNAME.generated_jwt
Presenza Facoltativo
Tipo Stringa (nome variabile di flusso)

&lt;PrivateKey/Id&gt;

<PrivateKey>
  <Id ref="flow-variable-name-here"/>
</PrivateKey>

or

<PrivateKey>
  <Id>your-id-value-here</Id>
</PrivateKey>

Specifica l'ID chiave (kid) da includere nell'intestazione JWT. Utilizza solo quando l'algoritmo è uno di RS256/RS384/RS512, PS256/PS384/PS512 o ES256/ES384/ES512.

Predefinita N/D
Presenza Facoltativo
Tipo Stringa
Valori validi Una stringa o una variabile di flusso

&lt;PrivateKey/Password&gt;

<PrivateKey>
  <Password ref="private.privatekey-password"/>
</PrivateKey>

Specifica la password che il criterio deve utilizzare per decriptare la chiave privata, se necessario. Utilizza la ref per passare la chiave in una variabile di flusso. Utilizza solo quando l'algoritmo è uno di RS256/RS384/RS512, PS256/PS384/PS512 o ES256/ES384/ES512.

Predefinita N/D
Presenza Facoltativo
Tipo Stringa
Valori validi Un riferimento alla variabile di flusso.

Nota: devi specificare una variabile di flusso. Edge rifiuterà come non valido un in cui la password è specificata in testo non crittografato. La variabile di flusso deve avere il prefisso "private". Ad esempio, private.mypassword

&lt;PrivateKey/Value&gt;

<PrivateKey>
  <Value ref="private.variable-name-here"/>
</PrivateKey>

Specifica una chiave privata con codifica PEM utilizzata per firmare il JWT. Utilizza l'attributo ref per passare chiave in una variabile di flusso. Utilizzare solo se l'algoritmo è uno di RS256/RS384/RS512, PS256/PS384/PS512 o ES256/ES384/ES512.

Predefinita N/D
Presenza Necessario per generare un JWT utilizzando l'algoritmo RS256.
Tipo Stringa
Valori validi Una variabile di flusso contenente una stringa che rappresenta un valore di chiave privata RSA con codifica PEM.

Nota: la variabile di flusso deve avere il prefisso "private". Ad esempio: private.mykey

&lt;SecretKey/Id&gt;

<SecretKey>
  <Id ref="flow-variable-name-here"/>
</SecretKey>

or

<SecretKey>
  <Id>your-id-value-here</Id>
</SecretKey>

Specifica l'ID chiave (kid) da includere nell'intestazione JWT di un JWT firmato con un HMAC dell'algoritmo. Da utilizzare solo se l'algoritmo è uno dei seguenti: HS256/HS384/HS512.

Predefinita N/D
Presenza Facoltativo
Tipo Stringa
Valori validi Una stringa o una variabile di flusso

&lt;SecretKey/Value&gt;

<SecretKey>
  <Value ref="private.your-variable-name"/>
</SecretKey>

Fornisce la chiave segreta utilizzata per verificare o firmare i token con un algoritmo HMAC. Utilizza solo quando l'algoritmo è uno di HS256/HS384/HS512. Utilizza l'attributo ref per passare la chiave in una variabile di flusso.

Edge applica una forza minima della chiave per gli algoritmi HS256/HS384/HS512. La lunghezza minima della chiave per HS256 è di 32 byte, per HS384 è di 48 byte e per HS512 è di 64 byte. L'utilizzo di una chiave a potenza inferiore causa un errore di runtime.

Predefinita N/D
Presenza Obbligatorio per gli algoritmi HMAC.
Tipo Stringa
Valori validi Una variabile di flusso che fa riferimento a una stringa

Nota: se una variabile di flusso deve avere il prefisso "private". Per esempio: private.mysecret

&lt;Subject&gt;

<Subject>subject-string-here</Subject>
o
<Subject ref="flow_variable" />

Ad esempio:

<Subject ref="apigee.developer.email"/>

Il criterio genera un JWT contenente una rivendicazione sub, impostata sul valore specificato value.Questa dichiarazione identifica o fa una dichiarazione in merito all'oggetto del JWT. Questo è uno dei insieme standard di attestazioni citate in RFC7519.

Predefinita N/D
Presenza Facoltativo
Tipo Stringa
Valori validi Qualsiasi valore che identifica in modo univoco un soggetto o una variabile di flusso che fa riferimento a un valore.

Variabili di flusso

Il criterio Genera JWT non imposta le variabili di flusso.

Messaggi di errore

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 Occurs when
steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 Occurs when the verification policy has multiple algorithms.
steps.jwt.AlgorithmMismatch 401 The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match.
steps.jwt.FailedToDecode 401 The policy was unable to decode the JWT. The JWT is possibly corrupted.
steps.jwt.GenerationFailed 401 The policy was unable to generate the JWT.
steps.jwt.InsufficientKeyLength 401 For a key less than 32 bytes for the HS256 algorithm, less than 48 bytes for the HS386 algortithm, and less than 64 bytes for the HS512 algorithm.
steps.jwt.InvalidClaim 401 For a missing claim or claim mismatch, or a missing header or header mismatch.
steps.jwt.InvalidCurve 401 The curve specified by the key is not valid for the Elliptic Curve algorithm.
steps.jwt.InvalidJsonFormat 401 Invalid JSON found in the header or payload.
steps.jwt.InvalidToken 401 This error occurs when the JWT signature verification fails.
steps.jwt.JwtAudienceMismatch 401 The audience claim failed on token verification.
steps.jwt.JwtIssuerMismatch 401 The issuer claim failed on token verification.
steps.jwt.JwtSubjectMismatch 401 The subject claim failed on token verification.
steps.jwt.KeyIdMissing 401 The Verify policy uses a JWKS as a source for public keys, but the signed JWT does not include a kid property in the header.
steps.jwt.KeyParsingFailed 401 The public key could not be parsed from the given key information.
steps.jwt.NoAlgorithmFoundInHeader 401 Occurs when the JWT contains no algorithm header.
steps.jwt.NoMatchingPublicKey 401 The Verify policy uses a JWKS as a source for public keys, but the kid in the signed JWT is not listed in the JWKS.
steps.jwt.SigningFailed 401 In GenerateJWT, for a key less than the minimum size for the HS384 or HS512 algorithms
steps.jwt.TokenExpired 401 The policy attempts to verify an expired token.
steps.jwt.TokenNotYetValid 401 The token is not yet valid.
steps.jwt.UnhandledCriticalHeader 401 A header found by the Verify JWT policy in the crit header is not listed in KnownHeaders.
steps.jwt.UnknownException 401 An unknown exception occurred.
steps.jwt.WrongKeyType 401 Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidNameForAdditionalClaim The deployment will fail if the claim used in the child element <Claim> of the <AdditionalClaims> element is one of the following registered names: kid, iss, sub, aud, iat, exp, nbf, or jti.
InvalidTypeForAdditionalClaim If the claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string, number, boolean, or map, the deployment will fail.
MissingNameForAdditionalClaim If the name of the claim is not specified in the child element <Claim> of the <AdditionalClaims> element, the deployment will fail.
InvalidNameForAdditionalHeader This error ccurs when the name of the claim used in the child element <Claim> of the <AdditionalClaims> element is either alg or typ.
InvalidTypeForAdditionalHeader If the type of claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string, number, boolean, or map, the deployment will fail.
InvalidValueOfArrayAttribute This error occurs when the value of the array attribute in the child element <Claim> of the <AdditionalClaims> element is not set to true or false.
InvalidConfigurationForActionAndAlgorithm If the <PrivateKey> element is used with HS Family algorithms or the <SecretKey> element is used with RSA Family algorithms, the deployment will fail.
InvalidValueForElement If the value specified in the <Algorithm> element is not a supported value, the deployment will fail.
MissingConfigurationElement This error will occur if the <PrivateKey> element is not used with RSA family algorithms or the <SecretKey> element is not used with HS Family algorithms.
InvalidKeyConfiguration If the child element <Value> is not defined in the <PrivateKey> or <SecretKey> elements, the deployment will fail.
EmptyElementForKeyConfiguration If the ref attribute of the child element <Value> of the <PrivateKey> or <SecretKey> elements is empty or unspecified, the deployment will fail.
InvalidVariableNameForSecret This error occurs if the flow variable name specified in the ref attribute of the child element <Value> of the <PrivateKey> or <SecretKey> elements does not contain the private prefix (private.).
InvalidSecretInConfig This error occurs if the child element <Value> of the <PrivateKey> or <SecretKey> elements does not contain the private prefix (private.).
InvalidTimeFormat If the value specified in the<NotBefore> element does not use a supported format, the deployment will fail.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
JWT.failed All JWT policies set the same variable in the case of a failure. JWT.failed = true

Example error response

JWT Policy Fault Codes

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

Example fault rule

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