Criterio Genera JWT

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Cosa

Genera un JWT firmato, con un insieme configurabile di rivendicazioni. Il JWT può quindi essere restituito ai client, trasmesso a destinazioni di backend o utilizzato in altri modi. Per un'introduzione dettagliata, consulta la panoramica dei criteri JWS e JWT.

Video

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

Samples

Genera un JWT firmato con l'algoritmo HS256

Questo criterio di esempio genera un nuovo JWT e lo firma utilizzando l'algoritmo HS256. HS256 si basa 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 e il payload JWT, quindi firma digitalmente il JWT. Guarda il video sopra per un esempio completo, incluso come presentare una richiesta alle norme.

La configurazione del criterio qui creerà un JWT con un insieme di rivendicazioni standard come definito dalla specifica JWT, inclusa una scadenza di 1 ora, nonché una rivendicazione aggiuntiva. Puoi includere tutte le rivendicazioni aggiuntive che vuoi. Consulta il riferimento dell'elemento per informazioni dettagliate sui requisiti e sulle opzioni per ogni elemento in questo criterio 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 avrà un payload con contenuti simili al seguente:

{ 
  "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 varierà.

Genera un JWT firmato con l'algoritmo RS256

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

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

Definire gli elementi chiave

Gli elementi utilizzati per specificare la chiave utilizzata per generare il JWT dipendono dall'algoritmo scelto, come mostrato nella seguente tabella:

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 saperne di più sui requisiti delle chiavi, consulta Informazioni sugli algoritmi di crittografia della firma.

Riferimento elemento per Genera JWT

Il riferimento ai criteri descrive gli elementi e gli attributi del criterio JWT per la generazione.

Nota: la configurazione varierà leggermente in base all'algoritmo di crittografia utilizzato. Consulta gli esempi per alcuni esempi che mostrano le configurazioni per casi d'uso specifici.

Attributi che si applicano all'elemento di primo livello

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

I seguenti attributi sono comuni a tutti gli elementi principali dei criteri.

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

Facoltativamente, utilizza l'elemento <displayname></displayname> per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

N/A Obbligatorio
continueOnError Impostalo su false per restituire un errore in caso di errore di un criterio. Questo è il comportamento previsto per la maggior parte dei criteri.

Imposta su true per fare in modo che l'esecuzione del flusso continui anche in caso di errore di un criterio.

false Facoltativo
abilitata Imposta il criterio su true per applicare il criterio.

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

true Facoltativo
async Questo attributo è obsoleto. false Deprecata

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

Utilizzalo in aggiunta all'attributo del nome 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 name del criterio.
Presenza Facoltativo
Digitare Stringa

<Algorithm>

<Algorithm>algorithm-here</Algorithm>

Specifica l'algoritmo di crittografia per firmare il token.

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

<Audience>

<Audience>audience-here</Audience>

or:

<Audience ref='variable_containing_audience'/>

Il criterio genera un JWT contenente un'attestazione aud impostata sul valore specificato. Questa attestazione identifica i destinatari a cui è destinato il JWT. Questa è una delle attestazioni registrate menzionate in RFC7519.

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

<Rivendicazioni/rivendicazioni aggiuntive>

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

Consente di specificare coppie nome/valore aggiuntive nel payload del JWT. Puoi specificare esplicitamente la dichiarazione come stringa, numero, booleano, mappa o array. Una mappa non è altro che un insieme di coppie nome/valore.

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

L'elemento <Claim> prevede i seguenti attributi:

  • name: (obbligatorio) il nome del reclamo.
  • ref - (Facoltativo) Il nome di una variabile di flusso. Se presente, la norma utilizzerà il valore di questa variabile come attestazione. Se vengono specificati sia un attributo ref sia un valore di rivendicazione esplicito, il valore esplicito è il valore predefinito e viene utilizzato se la variabile di flusso a cui viene fatto riferimento non è risolta.
  • type - (Facoltativo) Uno dei seguenti valori: stringa (predefinito), numero, booleano o mappa
  • array: (facoltativo) impostato 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 durante la configurazione del criterio. In alternativa, puoi trasmettere 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.

<Intestazioni aggiuntive/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>

Inserisci le coppie nome/valore aggiuntive nell'intestazione del JWT.

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

L'elemento <Claim> prevede i seguenti attributi:

  • name: (obbligatorio) il nome del reclamo.
  • ref - (Facoltativo) Il nome di una variabile di flusso. Se presente, la norma utilizzerà il valore di questa variabile come attestazione. Se vengono specificati sia un attributo ref sia un valore di rivendicazione esplicito, il valore esplicito è il valore predefinito e viene utilizzato se la variabile di flusso a cui viene fatto riferimento non è risolta.
  • type - (Facoltativo) Uno dei seguenti valori: stringa (predefinito), numero, booleano o mappa
  • array: (facoltativo) impostato su true per indicare se il valore è un array di tipi. Valore predefinito: false.

<CriticalHeaders>

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

or:

<CriticalHeaders ref=’variable_containing_headers’/>

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

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

In fase di runtime, il criterio VerificationJWT esamina l'intestazione crit. Per ogni elemento elencato nell'intestazione crit, verifica che anche l'elemento <KnownHeaders> del criterio VerificationJWT elenchi questa intestazione. Un'intestazione che il criterio VerificationJWT trova in crit e che non è elencata anche in <KnownHeaders> determina la mancata riuscita del criterio VerificationJWT.

Predefinita N/A
Presenza Facoltativo
Digitare Array di stringhe separate da virgole
Valori validi Un array o il nome di una variabile contenente l'array.

<CustomClaims>

Nota: al momento, un elemento CustomClaims viene inserito quando aggiungi un nuovo criterio GeneraJWT tramite l'interfaccia utente. Questo elemento non è funzionale e viene ignorato. L'elemento corretto da utilizzare al suo posto è <AdditionalClaims>. L'interfaccia utente verrà aggiornata per inserire gli elementi corretti in un secondo momento.

<ExpiresIn>

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

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

Predefinita N/A
Presenza Facoltativo
Digitare Numero intero
Valori validi

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

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

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

<ID>

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

Genera un JWT con la dichiarazione jti specifica. Quando il valore text e l'attributo ref sono entrambi vuoti, il criterio genera un jti contenente un UUID casuale. L'attestazione JWT ID (jti) è un identificatore univoco per il JWT. Per ulteriori informazioni su jti, fai riferimento a RFC7519.

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

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

Impostalo su false se vuoi che il criterio generi un errore quando una variabile di riferimento specificata nel criterio non è risolvibile. Imposta il valore su true per trattare qualsiasi variabile non risolvibile come stringa vuota (null).

Predefinita falso
Presenza Facoltativo
Digitare Booleano
Valori validi true o false

<Issuer>

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

Il criterio genera un JWT contenente una attestazione con nome iss,con un valore impostato sul valore specificato. Una rivendicazione che identifica l'emittente del JWT. Questo è uno degli insiemi di attestazioni registrate menzionati in RFC7519.

Predefinita N/A
Presenza Facoltativo
Digitare Stringa o riferimento
Valori validi Qualsiasi

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

Specifica l'ora in cui il token diventa valido. Il token non è valido fino al periodo di tempo specificato. Puoi specificare un valore di tempo assoluto o un intervallo di tempo relativo al momento in cui viene generato il token.

Predefinita N/A
Presenza Facoltativo
Digitare Stringa
Valori validi Vedi sotto.

Valori temporali validi per l'elemento NotBefore per i valori temporali 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 Ago 14 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

<OutputVariable>

<OutputVariable>jwt-variable</OutputVariable>

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

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

<PrivateKey/Id>

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

or

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

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

Predefinita N/A
Presenza Facoltativo
Digitare Stringa
Valori validi Una stringa o una variabile di flusso

<PrivateKey/Password>

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

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

Predefinita N/A
Presenza Facoltativo
Digitare Stringa
Valori validi Un riferimento a una variabile di flusso.

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

<PrivateKey/Value>

<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 la chiave in una variabile di flusso. Da utilizzare solo quando l'algoritmo è RS256/RS384/RS512, PS256/PS384/PS512 o ES256/ES384/ES512.

Predefinita N/A
Presenza Necessario per generare un JWT utilizzando l'algoritmo RS256.
Digitare 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

<SecretKey/Id>

<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 algoritmo HMAC. Da utilizzare solo quando l'algoritmo è HS256/HS384/HS512.

Predefinita N/A
Presenza Facoltativo
Digitare Stringa
Valori validi Una stringa o una variabile di flusso

<SecretKey/Value>

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

Fornisce la chiave segreta utilizzata per verificare o firmare i token con un algoritmo HMAC. Utilizzalo solo quando l'algoritmo è 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 con potenza inferiore causa un errore di runtime.

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

Nota:se si tratta di una variabile di flusso, deve avere il prefisso "private". Ad esempio, private.mysecret

<Subject>

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

Ad esempio:

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

Il criterio genera un JWT contenente un'attestazione sub, impostata sul valore specificato.Questa richiesta identifica o fornisce una dichiarazione sull'oggetto del JWT. Questo è uno degli insiemi standard di attestazioni menzionate in RFC7519.

Predefinita N/A
Presenza Facoltativo
Digitare 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

Questa sezione descrive i codici e i messaggi di errore restituiti e le variabili di errore impostate da Edge quando questo criterio attiva un errore. Queste informazioni sono importanti per sapere se si stanno sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta gli articoli Cosa devi sapere sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi quando il criterio viene eseguito.

Codice di errore Stato HTTP Si verifica quando
steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 Si verifica quando il criterio di verifica ha più algoritmi.
steps.jwt.AlgorithmMismatch 401 L'algoritmo specificato nel criterio di generazione non corrisponde a quello previsto nel criterio di verifica. Gli algoritmi specificati devono corrispondere.
steps.jwt.FailedToDecode 401 Il criterio non è stato in grado di decodificare il JWT. Il JWT potrebbe essere danneggiato.
steps.jwt.GenerationFailed 401 Il criterio non è stato in grado di generare il JWT.
steps.jwt.InsufficientKeyLength 401 Per una chiave di dimensioni inferiori a 32 byte per l'algoritmo HS256, a meno di 48 byte per l'algoritmo HS386 e a meno di 64 byte per l'algoritmo HS512.
steps.jwt.InvalidClaim 401 Per una rivendicazione mancante o mancata corrispondenza di una rivendicazione oppure una mancata corrispondenza di intestazione o intestazione.
steps.jwt.InvalidCurve 401 La curva specificata dalla chiave non è valida per l'algoritmo Curva ellittica.
steps.jwt.InvalidJsonFormat 401 JSON non valido trovato nell'intestazione o nel payload.
steps.jwt.InvalidToken 401 Questo errore si verifica quando la verifica della firma JWT non va a buon fine.
steps.jwt.JwtAudienceMismatch 401 La rivendicazione del segmento di pubblico non è riuscita alla verifica del token.
steps.jwt.JwtIssuerMismatch 401 La rivendicazione dell'emittente non è andata a buon fine durante la verifica del token.
steps.jwt.JwtSubjectMismatch 401 La rivendicazione dell'oggetto non è andata a buon fine durante la verifica del token.
steps.jwt.KeyIdMissing 401 Il criterio di verifica utilizza un JWKS come origine per le chiavi pubbliche, ma il JWT firmato non include una proprietà kid nell'intestazione.
steps.jwt.KeyParsingFailed 401 Impossibile analizzare la chiave pubblica a partire dalle informazioni sulla chiave specificate.
steps.jwt.NoAlgorithmFoundInHeader 401 Si verifica quando il JWT non contiene un'intestazione dell'algoritmo.
steps.jwt.NoMatchingPublicKey 401 Il criterio di verifica utilizza un JWKS come origine per le chiavi pubbliche, ma il kid nel JWT firmato non è elencato nel JWKS.
steps.jwt.SigningFailed 401 In CreateJWT, per una chiave inferiore alla dimensione minima per gli algoritmi HS384 o HS512
steps.jwt.TokenExpired 401 Il criterio tenta di verificare un token scaduto.
steps.jwt.TokenNotYetValid 401 Il token non è ancora valido.
steps.jwt.UnhandledCriticalHeader 401 Un'intestazione trovata dal criterio JWT di verifica nell'intestazione crit non è elencata in KnownHeaders.
steps.jwt.UnknownException 401 Si è verificata un'eccezione sconosciuta.
steps.jwt.WrongKeyType 401 Tipo di chiave specificato errato. Ad esempio, se specifichi una chiave RSA per un algoritmo Elliptic Curve o una chiave curva per un algoritmo RSA.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome errore Causa Correggi
InvalidNameForAdditionalClaim Il deployment non andrà a buon fine se la dichiarazione utilizzata nell'elemento secondario <Claim> dell'elemento <AdditionalClaims> è uno dei seguenti nomi registrati: kid, iss, sub, aud, iat, exp, nbf o jti.
InvalidTypeForAdditionalClaim Se la dichiarazione utilizzata nell'elemento secondario <Claim> dell'elemento <AdditionalClaims> non è di tipo string, number, boolean o map, il deployment non andrà a buon fine.
MissingNameForAdditionalClaim Se il nome della richiesta non è specificato nell'elemento secondario <Claim> dell'elemento <AdditionalClaims>, il deployment non andrà a buon fine.
InvalidNameForAdditionalHeader Questo errore si verifica quando il nome dell'attestazione utilizzata nell'elemento secondario <Claim> dell'elemento <AdditionalClaims> è alg o typ.
InvalidTypeForAdditionalHeader Se il tipo di attestazione utilizzato nell'elemento secondario <Claim> dell'elemento <AdditionalClaims> non è di tipo string, number, boolean o map, il deployment non andrà a buon fine.
InvalidValueOfArrayAttribute Questo errore si verifica quando il valore dell'attributo array nell'elemento secondario <Claim> dell'elemento <AdditionalClaims> non è impostato su true o false.
InvalidConfigurationForActionAndAlgorithm Se l'elemento <PrivateKey> viene utilizzato con gli algoritmi della famiglia HS o l'elemento <SecretKey> con gli algoritmi della famiglia RSA, il deployment non andrà a buon fine.
InvalidValueForElement Se il valore specificato nell'elemento <Algorithm> non è supportato, il deployment non andrà a buon fine.
MissingConfigurationElement Questo errore si verifica se l'elemento <PrivateKey> non viene utilizzato con gli algoritmi della famiglia RSA o se l'elemento <SecretKey> non viene utilizzato con gli algoritmi della famiglia HS.
InvalidKeyConfiguration Se l'elemento secondario <Value> non è definito negli elementi <PrivateKey> o <SecretKey>, il deployment non andrà a buon fine.
EmptyElementForKeyConfiguration Se l'attributo ref dell'elemento secondario <Value> degli elementi <PrivateKey> o <SecretKey> è vuoto o non specificato, il deployment non andrà a buon fine.
InvalidVariableNameForSecret Questo errore si verifica se il nome della variabile di flusso specificato nell'attributo ref dell'elemento secondario <Value> degli elementi <PrivateKey> o <SecretKey> non contiene il prefisso privato (private.).
InvalidSecretInConfig Questo errore si verifica se l'elemento secondario <Value> degli elementi <PrivateKey> o <SecretKey> non contiene il prefisso privato (private.).
InvalidTimeFormat Se il valore specificato nell'elemento <NotBefore> non utilizza un formato supportato, il deployment non andrà a buon fine.

Variabili di errore

Queste variabili vengono impostate quando si verifica un errore di runtime. Per maggiori informazioni, consulta la sezione Cosa devi sapere sugli errori relativi ai criteri.

Variabili Dove Esempio
fault.name="fault_name" fault_name è il nome dell'errore, come indicato nella tabella Errori di runtime riportata sopra. Il nome del guasto è l'ultima parte del codice di errore. fault.name Matches "TokenExpired"
JWT.failed Tutti i criteri JWT impostano la stessa variabile in caso di errore. JWT.failed = true

Esempio di risposta di errore

Codici di errore dei criteri JWT

Per la gestione degli errori, la best practice prevede il trap della parte errorcode della risposta di errore. Non fare affidamento sul testo nel faultstring, perché potrebbe cambiare.

Esempio di regola di errore

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