Validar JWT
Use a política de segurança Validar JWT para ativar a validação de um JSON Web Token (JWT) em uma solicitação antes de permitir acesso às APIs.
Suporte de gateway
| Gateway | Versão da política |
|---|---|
| DataPower® Gateway (v5 compatible) | 1.0.0 |
| DataPower API Gateway | 2.0.0 |
Este tópico descreve como configurar a política na interface de usuário do assembly; para obter detalhes sobre como configurar a política na sua fonte do OpenAPI, consulte jwt-validate.
Sobre
O JSON Web Token (JWT) é um meio compacto e protegido por URL de representar solicitações que devem ser transferidas entre duas partes. A política Validar JWT permite proteger o acesso a suas APIs usando a validação do JWT. Por exemplo, quando uma solicitação de entrada que contém um JWT no cabeçalho é recebida, a política Validar JWT extrai o token, verifica e decriptografa (se apropriado) a assinatura e valida a solicitação. Se válida, a solicitação é colocada em uma variável de tempo de execução (para uso subsequente, se necessário) e o acesso é permitido para a API. Se a solicitação não for válida, o acesso será negado.
Todas as solicitações especificadas na política Validar JWT são validadas, mas isso não é necessariamente todas as solicitações contidas no JWT. Nem todas as solicitações que estão no JWT devem ser validadas, mas se qualquer uma das solicitações especificadas na política Validar JWT falhar, a validação inteira falhará. Se a validação for bem-sucedida, o conjunto integral de solicitações contidas no JWT será gravado na variável de tempo de execução especificada na propriedade Output Claims. Dessa maneira, isso permite que qualquer ação subsequente para usar essa variável de tempo de execução valide adicionalmente o conjunto integral de solicitações que estavam no JWT, conforme necessário.
- Se a mensagem original foi assinada com uma Chave secreta compartilhada, o objeto criptográfico especificado também deverá ser uma Chave secreta compartilhada.
- Se a mensagem original foi assinada com uma Chave privada, o objeto criptográfico especificado deverá ser um Certificado criptográfico (certificado público).
- O material criptográfico pode ser fornecido por meio de um JSON Web Key (JWK).
- Se um parâmetro de cabeçalho JWK estiver incluído no cabeçalho do JWT, o parâmetro deverá corresponder ao JWK ou objeto criptográfico especificado na política, ou a validação JWT falhará.
- Se um objeto criptográfico e um JWK forem ambos especificados, o objeto criptográfico será usado para decriptografar ou verificar o JWT.
- A ação de validação do JWT no DataPower API Gateway pode verificar um JWT usando um único JWK ou um conjunto de JWK
Pré-requisitos
- IBM® DataPower V7.5 com a opção de Otimização de Aplicativos (AO).
- Se você estiver usando um ou mais objetos criptográficos (objetos de criptografia), eles devem estar localizados no IBM API Connect domínio do dispositivo DataPower. Os objetos criptográficos devem referenciar a Chave secreta compartilhada ou o certificado público que é necessário para decriptografar o conteúdo JWT ou verificar a assinatura.
- Se um JSON Web Key (JWK) ou conjunto JWK estiver sendo usado, ele deverá ser referenciado por uma variável de tempo de execução.
Propriedades
A tabela a seguir lista as propriedades de política, indica se uma propriedade é necessária, especifica os valores válidos e padrão para entrada e especifica o tipo de dados dos valores.
| Rótulo da propriedade | Obrigatório | Descrição | Tipo de dados |
|---|---|---|---|
| Título | True | O título da política. O valor padrão é |
sequência |
| Descrição | Não | Uma descrição da política. | sequência |
| JSON Web Token (JWT) | True | A variável de contexto ou de tempo de execução que contém o JWT a ser validado. O valor padrão é:
Nota: O formato do cabeçalho de autorização deve ser: em que
jwt-token é o JWT codificado. |
sequência |
| Solicitações de saída | True | A variável de tempo de execução à qual o conjunto integral de solicitações contidas no JWT está designado. O valor padrão é:
|
sequência |
| Solicitação do emissor | Não | O Perl Compatible Regular Expressions (PCRE) para usar para validar a solicitação do Emissor (iss). | sequência |
| Solicitação do público | Não | O PCRE a ser usado par validar a solicitação do Público (aud). | sequência |
| Decriptografar objeto criptográfico | Não | O objeto criptográfico (uma chave compartilhada ou um certificado) a ser usado para decodificar a reivindicação.1 | sequência |
| Decriptografar o nome de variável do JWK criptográfico | Não | Variável de tempo de execução que contém a chave JWK a ser usada para descriptografar o JWT. 1 | sequência |
| Verificar o objeto criptográfico | Não | O objeto criptográfico (uma chave compartilhada ou um certificado) a ser usado para verificar a assinatura. 2 | sequência |
| Verificar o nome de variável do JWK criptográfico | Não | Variável de tempo de execução que contém a chave JWK, ou conjunto de chaves JWK, a ser usada para verificar a assinatura. 2 | sequência |
Exemplo
- jwt-validate:
version: 1.0.0
title: jwt-validate
jwt: request.headers.authorization
output-claims: decoded.claims
iss-claim: "'^data.*'"
aud-claim: "'^id.*'"
jwe-crypto: jweCryptoObjectName
jwe-jwk: jwe.jwk
jws-crypto: jwsCryptoObjectName
jws-jwk: jws.jwk
Erros
RuntimeError- um erro genérico que captura todos os erros que ocorrem durante a execução da política. Após uma falha de validação, a mensagem de erro detalhada recebida do módulo JOSE subjacente é gravada no log do sistema padrão como uma mensagem de erro. Essa mensagem de erro detalhada também é designada à variável de tempo de execução jwt-validate.error-message, portanto, pode ser recuperada por meio de captura.
Invalid-JWT-Validate failure. A mensagem de erro detalhada do módulo JOSE
subjacente pode ser localizada no log do sistema.