Política GenerateJWT

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

O que

Gera um JWT assinado com um conjunto configurável de declarações. O JWT pode ser retornado aos clientes, transmitido para destinos de back-end ou usado de outras maneiras. Consulte a visão geral das políticas do JWS e do JWT para uma introdução detalhada.

Vídeo

Assista a um vídeo curto para saber como gerar um JWT assinado.

Amostras

Gerar um JWT assinado com o algoritmo HS256

Essa política de exemplo gera um novo JWT e o assina usando o algoritmo HS256. O HS256 depende de um segredo compartilhado para assinar e verificar a assinatura.

Quando essa ação de política é acionada, o Edge codifica o cabeçalho e o payload do JWT assina o JWT. Veja no vídeo acima um exemplo completo, incluindo como fazer uma solicitação à política.

A configuração da política criará um JWT com um conjunto de declarações padrão, conforme definido pela especificação JWT, incluindo uma expiração de uma hora, bem como uma declaração adicional. Você pode incluir quantas reivindicações adicionais quiser. Consulte a referência de elemento para detalhes sobre os requisitos e as opções de cada elemento desta política de amostra.

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

O JWT resultante terá esse cabeçalho…

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

... e terão um payload com conteúdo como este:

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

O valor das declarações iat, exp e jTI varia.

Gerar um JWT assinado com o algoritmo RS256

Esta política de exemplo gera um novo JWT e o assina usando o algoritmo RS256. A geração de uma assinatura RS256 depende de uma chave privada RSA, que precisa ser fornecida no formato codificado PEM. Veja no vídeo acima um exemplo completo, incluindo como fazer uma solicitação à política.

Quando essa ação de política é acionada, o Edge codifica e assina digitalmente o JWT, incluindo as declarações. Para saber mais sobre as partes de um JWT e como elas são criptografadas e assinadas, consulte 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>

Como definir os elementos principais

Os elementos usados para especificar a chave usada para gerar o JWT dependem do algoritmo escolhido, conforme mostrado na tabela a seguir:

Algoritmo Elementos-chave
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>

Os elementos <Password> e <Id> são opcionais.

*Para mais informações sobre os requisitos de chave, consulte Sobre algoritmos de criptografia de assinatura.

Referência de elemento para "Gerar JWT"

A referência de política descreve os elementos e atributos da política "Gerar JWT".

Observação: a configuração varia um pouco dependendo do algoritmo de criptografia utilizado. Consulte os Amostras para ver exemplos que demonstram configurações para casos de uso específicos.

Atributos que se aplicam ao elemento de nível superior

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

Os seguintes atributos são comuns a todos os elementos pai de política.

Atributo Descrição Padrão Presença
nome O nome interno da política. Os caracteres que podem ser usados no nome são restritos a: A-Z0-9._\-$ %. No entanto, a interface de gerenciamento de borda aplica restrições, como a remoção automática de caracteres que não são alfanuméricos.

Opcionalmente, use o elemento <displayname></displayname> para rotular a política no editor de proxy da IU de gerenciamento com um nome de linguagem natural diferente.

N/A Obrigatório
continueOnError Defina como false para retornar um erro quando uma política falhar. Esse é o comportamento esperado na maioria das políticas.

Defina como true para que a execução do fluxo continue, mesmo depois que uma política falhar.

falso Opcional
ativado Defina como true para aplicar a política.

Defina como false para "desativar" a política. A política não será aplicada mesmo se permanecer anexada a um fluxo.

verdadeiro Opcional
async Esse atributo está obsoleto. falso Suspenso

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

Use além do atributo name para rotular a política no editor de proxy da IU de gerenciamento com um nome de linguagem natural diferente.

Padrão Se você omitir esse elemento, o valor do atributo name da política será usado.
Presença Opcional
Tipo String

<Algoritmo>S

<Algorithm>algorithm-here</Algorithm>

Especifica o algoritmo de criptografia para assinar o token.

Padrão N/A
Presença Obrigatório
Tipo String
Valores válidos HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512

<Audience>

<Audience>audience-here</Audience>

or:

<Audience ref='variable_containing_audience'/>

A política gera um JWT contendo uma declaração aud definida como o valor especificado. Essa declaração identifica os destinatários para os quais o JWT é destinado. Esta é uma das declarações registradas mencionadas em RFC7519.

Padrão N/A
Presença Opcional
Tipo Matriz (uma lista de valores separados por vírgula)
Valores válidos Qualquer conteúdo que identifique o público-alvo.

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

Permite especificar outros pares de nome/valor de declaração no payload do JWT. É possível especificar a declaração explicitamente como string, um número, um booleano, um mapa ou uma matriz. Um mapa é simplesmente um conjunto de pares de nome/valor.

Padrão N/A
Presença Opcional
Valores válidos Qualquer valor que você queira usar para uma reivindicação adicional. É possível especificar a declaração explicitamente como string, um número, um booleano, um mapa ou uma matriz.

O elemento <Claim> usa estes atributos:

  • name: obrigatório. O nome da declaração.
  • ref: (opcional) o nome de uma variável de fluxo. Se presente, a política usará o valor dessa variável como a declaração. Se um atributo ref e um valor de declaração explícito forem especificados, o valor explícito será o padrão e será usado se a variável de fluxo referenciada não for resolvida.
  • type: (opcional) uma das seguintes opções: string (padrão), número, booleano ou mapa.
  • array: (opcional) defina como true para indicar se o valor é uma matriz de tipos. Padrão: false

Quando você inclui o elemento <Claim>, os nomes das declarações são definidos estaticamente quando você configura a política. Como alternativa, você pode passar um objeto JSON para especificar os nomes das declarações. Como o objeto JSON é transmitido como uma variável, os nomes das declarações no JWT gerado são determinados no ambiente de execução.

Exemplo:

<AdditionalClaims ref='json_claims'/>

Em que a variável json_claims contém um objeto JSON no 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 }
  }
}

O JWT gerado inclui todas as declarações no objeto JSON.

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

Colocar os pares de nome/valor adicionais de declaração no cabeçalho do JWT.

Padrão N/A
Presença Opcional
Valores válidos Qualquer valor que você queira usar para uma reivindicação adicional. É possível especificar a declaração explicitamente como string, um número, um booleano, um mapa ou uma matriz.

O elemento <Claim> usa estes atributos:

  • name: obrigatório. O nome da declaração.
  • ref: (opcional) o nome de uma variável de fluxo. Se presente, a política usará o valor dessa variável como a declaração. Se um atributo ref e um valor de declaração explícito forem especificados, o valor explícito será o padrão e será usado se a variável de fluxo referenciada não for resolvida.
  • type: (opcional) uma das seguintes opções: string (padrão), número, booleano ou mapa.
  • array: (opcional) defina como true para indicar se o valor é uma matriz de tipos. Padrão: false

<CriticalHeaders>

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

or:

<CriticalHeaders ref=variable_containing_headers/>

Adiciona o cabeçalho crítico, crit, ao cabeçalho do JWT. O cabeçalho crit é uma matriz de nomes de cabeçalho que precisam ser conhecidos e reconhecidos pelo receptor do JWT. Exemplo:

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

No ambiente de execução, a política Verify JWT examina o cabeçalho crit. Para cada item listado no cabeçalho crit, ele verifica se o elemento <KnownHeaders> da política VerifyJWT também lista esse cabeçalho. Qualquer cabeçalho que a política VerifyJWT encontrar em crit que também não esteja listado em <KnownHeaders> faça com que a política VerifyJWT falhe.

Padrão N/A
Presença Opcional
Tipo Matriz de strings separadas por vírgulas
Valores válidos Uma matriz ou o nome de uma variável que contém a matriz.

<CustomClaims>

Observação: atualmente, um elemento CustomClaims é inserido quando você adiciona uma nova política GenerateJWT por meio da IU. Esse elemento não é funcional e é ignorado. O elemento correto a ser usado é <AdditionalClaims>. A IU será atualizada para inserir os elementos corretos posteriormente.

<ExpiresIn>

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

Especifica a vida útil do JWT em milissegundos, segundos, minutos, horas ou dias.

Padrão N/A
Presença Opcional
Tipo Número inteiro
Valores válidos

Um valor ou uma referência a uma variável de fluxo contendo o valor. As unidades de tempo podem ser especificadas da seguinte maneira:

  • ms = milissegundos (padrão)
  • s = segundos
  • m = minutos
  • h = horas
  • d = dias

Por exemplo, um ExpiresIn=10 é equivalente a uma ExpiresIn de 864000s.

<Id>

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

Gera um JWT com a declaração jTI específica. Quando o valor de texto e o atributo de referência estão vazios, a política gerará um jti contendo um UUID aleatório. A declaração JWT ID (jTI) é um identificador exclusivo do JWT. Para mais informações sobre jti, consulte RFC7519.

Padrão N/A
Presença Opcional
Tipo String ou referência.
Valores válidos Uma string ou o nome de uma variável de fluxo que contém o ID.

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

Defina como falso se você quiser que a política gere um erro quando qualquer variável referenciada especificada na política não for resolvida. Defina como "true" para tratar qualquer variável não resolvida como uma string vazia (null).

Padrão Falso
Presença Opcional
Tipo Booleano
Valores válidos verdadeiro ou falso

<Issuer>

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

A política gera um JWT contendo uma declaração com o nome iss, com um valor definido como o valor especificado. Uma declaração que identifica o emissor do JWT. Este é um dos conjuntos registrados de declarações mencionadas na RFC7519.

Padrão N/A
Presença Opcional
Tipo String ou referência
Valores válidos Tudo

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

Especifica o horário em que o token se torna válido. O token é inválido até o tempo especificado. É possível especificar um valor de tempo absoluto ou um horário relativo em que o token é gerado.

Padrão N/A
Presença Opcional
Tipo String
Valores válidos Saiba mais a seguir.

Valores de tempo válidos para o elemento NotBefore para valores de tempo absoluto

Nome Format Exemplo
classificável 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

Para valores de tempo relativo, especifique um número inteiro e um período, por exemplo:

  • 10s
  • 60m
  • 12h

<OutputVariable>

<OutputVariable>jwt-variable</OutputVariable>

Especifica onde colocar o JWT gerado por essa política. Por padrão, ele é colocado na variável de fluxo jwt.POLICYNAME.generated_jwt.

Padrão jwt.POLICYNAME.generated_jwt
Presença Opcional
Tipo String (um nome de variável de fluxo)

<PrivateKey/Id>

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

or

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

Especifica o ID da chave (kid) a ser incluído no cabeçalho do JWT. Use somente quando o algoritmo for RS256/RS384/RS512, PS256/PS384/PS512 ou ES256/ES384/ES512.

Padrão N/A
Presença Opcional
Tipo String
Valores válidos Uma variável ou fluxo de fluxo

<PrivateKey/Password>

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

Especifique a senha que a política deve usar para descriptografar a chave privada, se necessário. Use o atributo ref para passar a chave em uma variável de fluxo. Use somente quando o algoritmo for RS256/RS384/RS512, PS256/PS384/PS512 ou ES256/ES384/ES512.

Padrão N/A
Presença Opcional
Tipo String
Valores válidos Uma variável de referência de fluxo.

Observação: é necessário especificar uma variável de fluxo. O Edge será rejeitado como inválido configuração de política em que a senha é especificada em texto simples. A variável de fluxo precisa ter o prefixo "particular". Por exemplo, private.mypassword

<PrivateKey/Value>

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

Especifica uma chave privada codificada em PEM usada para assinar o JWT. Use o atributo ref para transmitir a chave em uma variável de fluxo. Use somente quando o algoritmo for um RS256/RS384/RS512, PS256/PS384/PS512 ou ES256/ES384/ES512.

Padrão N/A
Presença Necessário para gerar um JWT usando o algoritmo RS256.
Tipo String
Valores válidos Uma variável de fluxo que contém uma string que representa um valor de chave privada RSA codificado em PEM.

Observação: a variável do fluxo precisa ter o prefixo "private". Por exemplo, private.mykey

<SecretKey/Id>

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

or

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

Especifica o código da chave (kid) a ser incluído no cabeçalho JWT de um JWT assinado com um algoritmo HMAC. Use somente quando o algoritmo for HS256/HS384/HS512.

Padrão N/A
Presença Opcional
Tipo String
Valores válidos Uma variável ou fluxo de fluxo

<SecretKey/Value>

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

Fornece a chave secreta usada para verificar ou assinar tokens com um algoritmo HMAC. Use somente quando o algoritmo for um de HS256/HS384/HS512. Use o atributo ref para transmitir a chave em uma variável de fluxo.

O Edge aplica uma força mínima de chave para os algoritmos HS256/HS384/HS512. O comprimento mínimo de chave para HS256 é 32 bytes, para HS384 é 48 bytes. Para HS512, 64 bytes. O uso de uma chave de força mais baixa causa um erro de tempo de execução.

Padrão N/A
Presença Obrigatório para algoritmos HMAC.
Tipo String
Valores válidos Uma variável de fluxo que se refere a uma string

Observação: se uma variável de fluxo, ela precisa ter o prefixo "particular". Por exemplo, private.mysecret

<Subject>

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

Exemplo:

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

A política gera um JWT contendo uma declaração sub, definida como o valor especificado.Essa declaração identifica ou faz uma instrução sobre o assunto do JWT. Esse é um dos conjuntos padrão de declarações mencionadas na RFC7519.

Padrão N/A
Presença Opcional
Tipo String
Valores válidos Qualquer valor que identifica exclusivamente um assunto ou uma variável de fluxo referente a um valor.

Variáveis de fluxo

A política "Gerar JWT" não define variáveis de fluxo.

Referência de erros

Nesta seção, descrevemos os códigos e as mensagens de erro retornados, além das variáveis de falha definidas pelo Edge quando esta política aciona um erro. Essas informações são importantes para saber se você está desenvolvendo regras de falhas para lidar com elas. Para saber mais, consulte O que você precisa saber sobre erros de política e Como lidar com falhas.

Erros de execução

Esses erros podem ocorrer quando a política é executada.

Código de falha Status HTTP Ocorre quando
steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 Ocorre quando a política de verificação tem vários algoritmos.
steps.jwt.AlgorithmMismatch 401 O algoritmo especificado na política de geração não corresponde ao esperado na política de verificação. Os algoritmos especificados precisam corresponder.
steps.jwt.FailedToDecode 401 A política não conseguiu decodificar o JWT. É possível que o JWT esteja corrompido.
steps.jwt.GenerationFailed 401 A política não pôde gerar o JWT.
steps.jwt.InsufficientKeyLength 401 Para uma chave com menos de 32 bytes para o algoritmo HS256, menos de 48 bytes para o algoritmo HS386 e menos de 64 bytes para o algoritmo HS512.
steps.jwt.InvalidClaim 401 Para uma reivindicação ausente ou incompatibilidade de reivindicação ou um cabeçalho ou cabeçalho ausente.
steps.jwt.InvalidCurve 401 A curva especificada pela chave não é válida para o algoritmo de curva elíptica.
steps.jwt.InvalidJsonFormat 401 JSON inválido encontrado no cabeçalho ou payload.
steps.jwt.InvalidToken 401 Esse erro ocorre quando a verificação de assinatura do JWT falha.
steps.jwt.JwtAudienceMismatch 401 A declaração de público falhou na verificação do token.
steps.jwt.JwtIssuerMismatch 401 A declaração do emissor falhou na verificação do token.
steps.jwt.JwtSubjectMismatch 401 A declaração do assunto falhou na verificação do token.
steps.jwt.KeyIdMissing 401 A política "Verificar" usa um JWKS como uma origem para chaves públicas, mas o JWT assinado não inclui uma propriedade kid no cabeçalho.
steps.jwt.KeyParsingFailed 401 Não foi possível analisar a chave pública com base nas informações de chave fornecidas.
steps.jwt.NoAlgorithmFoundInHeader 401 Ocorre quando o JWT não contém cabeçalho de algoritmo.
steps.jwt.NoMatchingPublicKey 401 A política de verificação usa uma JWKS como fonte para chaves públicas, mas o kid no JWT assinado não está listado na JWKS.
steps.jwt.SigningFailed 401 Em GenerateJWT, para uma chave menor que o tamanho mínimo para os algoritmos HS384 ou HS512
steps.jwt.TokenExpired 401 A política tenta verificar um token expirado.
steps.jwt.TokenNotYetValid 401 O token ainda não é válido.
steps.jwt.UnhandledCriticalHeader 401 Um cabeçalho encontrado pela política de verificação de JWT no cabeçalho crit não está listado em KnownHeaders.
steps.jwt.UnknownException 401 Ocorreu uma exceção desconhecida.
steps.jwt.WrongKeyType 401 Tipo incorreto de chave especificado. Por exemplo, se você especificar uma chave RSA para um algoritmo de curva elíptica ou uma chave de curva para um algoritmo RSA.

Erros de implantação

Esses erros podem ocorrer quando você implanta um proxy que contém essa política.

Nome do erro Causa Corrigir
InvalidNameForAdditionalClaim A implantação falhará se a declaração usada no elemento filho <Claim> do elemento <AdditionalClaims> for um dos seguintes nomes registrados: kid, iss, sub, aud, iat, exp, nbf ou jti.
InvalidTypeForAdditionalClaim Se a declaração usada no elemento filho <Claim> do elemento <AdditionalClaims> não for do tipo string, number, boolean ou map, a implantação falhará.
MissingNameForAdditionalClaim Se o nome da declaração não for especificado no elemento filho <Claim> do elemento <AdditionalClaims>, a implantação falhará.
InvalidNameForAdditionalHeader Esse erro ocorre quando o nome da declaração usada no elemento filho <Claim> do elemento <AdditionalClaims> é alg ou typ.
InvalidTypeForAdditionalHeader Se o tipo de declaração usado no elemento filho <Claim> do elemento <AdditionalClaims> não for do tipo string, number, boolean ou map, a implantação falhará.
InvalidValueOfArrayAttribute Esse erro ocorre quando o valor do atributo de matriz no elemento filho <Claim> do elemento <AdditionalClaims> não está definido como true ou false.
InvalidConfigurationForActionAndAlgorithm Se o elemento <PrivateKey> for usado com algoritmos da família HS ou o elemento <SecretKey> for usado com algoritmos da família RSA, a implantação falhará.
InvalidValueForElement Se o valor especificado no elemento <Algorithm> não for compatível, a implantação falhará.
MissingConfigurationElement Esse erro ocorrerá se o elemento <PrivateKey> não for usado com algoritmos da família RSA ou se o elemento <SecretKey> não for usado com algoritmos da família HS.
InvalidKeyConfiguration Se o elemento filho <Value> não estiver definido nos elementos <PrivateKey> ou <SecretKey>, a implantação falhará.
EmptyElementForKeyConfiguration Se o atributo de referência do elemento filho <Value> dos elementos <PrivateKey> ou <SecretKey> estiver vazio ou não especificado, a implantação falhará.
InvalidVariableNameForSecret Esse erro ocorrerá se o nome da variável de fluxo especificado no atributo de referência do elemento filho <Value> dos elementos <PrivateKey> ou <SecretKey> não contiver o prefixo particular (private.).
InvalidSecretInConfig Esse erro ocorre se o elemento filho <Value> dos elementos <PrivateKey> ou <SecretKey> não contiver o prefixo particular (private.).
InvalidTimeFormat Se o valor especificado no elemento <NotBefore> não usar um formato compatível, a implantação falhará.

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>