Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Configure JWT authentication on an ingress gateway

Última atualização: Jun 28, 2026

Sem autenticação no nível do gateway, qualquer requisição pode alcançar seus serviços de backend e expô-los a acessos não autorizados. A autenticação JSON Web Token (JWT) em um gateway de entrada do Alibaba Cloud Service Mesh (ASM) aplica controle de acesso centralizado para garantir que apenas requisições com JWT válido cheguem aos seus serviços.

Como funciona

O ASM usa dois recursos de segurança do Istio para aplicar a autenticação JWT no gateway:

  • RequestAuthentication: define como o gateway valida os JWTs recebidos, incluindo emissor, chave de assinatura e local do token na requisição. O sistema rejeita requisições com JWT inválido. Requisições sem JWT são aceitas, mas não possuem identidade autenticada.

  • AuthorizationPolicy: controla quais requisições devem apresentar um JWT válido. Sem essa política, requisições não autenticadas (sem token) passam livremente para seus serviços.

Esses recursos funcionam em conjunto: o RequestAuthentication valida os tokens e o AuthorizationPolicy exige sua presença. Ao configurar a autenticação JWT pelo console do ASM, o sistema gera ambos os recursos automaticamente. A etapa JWT Config cria o RequestAuthentication, enquanto a etapa Matching Rules cria o AuthorizationPolicy.

Nota

O gateway ainda rejeita requisições para caminhos não correspondentes que contenham um JWT inválido. Apenas requisições sem nenhum JWT são permitidas em caminhos não correspondentes.

Informações básicas

Os JWTs são amplamente usados para autenticar usuários. Um JWT contém informações do usuário e um campo com dados criptografados. Durante a autenticação baseada em JWT, o sistema descriptografa essas informações e as compara com os dados fornecidos para verificar a identidade do usuário. Para mais detalhes, consulte JWT.

Pré-requisitos

Antes de começar, verifique se você tem:

Configurar a autenticação JWT

A configuração consiste em duas etapas: definir as regras de validação de JWT e estabelecer as regras de correspondência que determinam quais requisições exigem autenticação.

Etapa 1: Configurar as regras de validação de JWT

  1. Faça login no console do ASM.

  2. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  3. Na página Mesh Management, clique em nome da instância do ASM desejada.

  4. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.

  5. Na página Ingress Gateway, clique em nome do gateway de entrada que deseja configurar.

  6. No painel de navegação de visão geral do gateway, escolha Gateway Security > JWT certification.

  7. Na etapa JWT Config, ative Enable gateway JWT authentication e configure os seguintes parâmetros:

    Parâmetro

    Descrição

    Issuer

    Entidade que emitiu o JWT. Exemplo: testing@secure.istio.io.

    JWKS Source

    Origem do JSON Web Key Set (JWKS) usado para verificar as assinaturas do JWT. Selecione jwks para fornecer o conjunto de chaves diretamente.

    Key

    Conteúdo do JWKS. Cole um objeto JSON com as chaves públicas usadas para verificar as assinaturas do JWT. Exemplo: { "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]}

    AdvancedConfig

    (Opcional) Clique em AdvancedConfig para abrir a caixa de diálogo JWT Rules Advanced Options. Defina as configurações descritas na tabela abaixo e clique em OK.

    Opções avançadas:

    Opção

    Descrição

    JWTToken Position

    Local onde o gateway busca o JWT nas requisições recebidas.

    JWT Passthrough

    Define se o gateway deve encaminhar o JWT original ao serviço upstream após a validação.

    Transmit Payload through Header

    Nome do header usado para encaminhar o payload decodificado do JWT ao serviço upstream.

  8. Clique em Next.

Etapa 2: Configurar as regras de correspondência

  1. Na etapa Matching Rules, configure os seguintes parâmetros: Match Mode: determina como o gateway aplica a autenticação JWT às requisições correspondentes. Matching Rules: definem quais requisições exigem (ou estão isentas de) autenticação JWT. Selecione Custom Matching Rules, ative Path e insira o caminho alvo. Por exemplo, para exigir autenticação JWT apenas para o caminho /productpage: Com essa configuração, as requisições para /productpage devem conter um JWT válido. Requisições para outros caminhos passam sem necessidade de JWT.

    • Defina Match Mode como Auth If Matched.

    • Selecione Custom Matching Rules, ative Path e defina o caminho como /productpage.

    Nota

    O gateway ainda rejeita requisições para caminhos não correspondentes que contenham um JWT inválido. Apenas requisições sem nenhum JWT são permitidas em caminhos não correspondentes.

    Modo

    Comportamento

    Auth If Matched

    Requisições correspondentes devem passar pela autenticação JWT. Requisições não correspondentes não precisam de JWT.

    Bypass Auth If Matched

    Requisições correspondentes ignoram a autenticação JWT. Todas as outras requisições devem passar pela autenticação JWT.

  2. Clique em Submit.

Após clicar em Submit, uma mensagem de confirmação (JWT-based authentication is successfully configured) aparece e os recursos de segurança do Istio gerados são exibidos. Clique em YAML para visualizar as configurações dos recursos.

Verificar a configuração

Execute os testes a seguir para confirmar que a autenticação JWT funciona conforme o esperado.

Preparar o token de teste

Exporte um JWT de exemplo como variável de ambiente:

TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3Uc1MI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg

Substitua <IP address of the ASM gateway> nos comandos a seguir pelo endereço IP real do seu gateway de entrada.

JWT válido em um caminho protegido

Verifique se uma requisição com JWT válido para /productpage retorna 200 OK:

curl -I http://<IP address of the ASM gateway>/productpage -H "Authorization: Bearer $TOKEN"

Resposta esperada:

HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
content-length: 4294
server: istio-envoy
date: Tue, 17 Jan 2023 08:47:34 GMT
x-envoy-upstream-service-time: 17

Ausência de JWT em um caminho protegido

Confirme se uma requisição sem JWT para /productpage retorna 403 Forbidden:

curl -I http://<IP address of the ASM gateway>/productpage

Resposta esperada:

HTTP/1.1 403 Forbidden
content-length: 19
content-type: text/plain
date: Tue, 17 Jan 2023 08:50:31 GMT
server: istio-envoy

JWT inválido em um caminho protegido

Valide se uma requisição com JWT inválido para /productpage retorna 401 Unauthorized:

curl -I http://<IP address of the ASM gateway>/productpage -H "Authorization: Bearer invalid token"

Resposta esperada:

HTTP/1.1 401 Unauthorized
www-authenticate: Bearer realm="http://114.55.XXX.XXX/productpage", error="invalid_token"
content-length: 79
content-type: text/plain
date: Tue, 17 Jan 2023 08:51:47 GMT
server: istio-envoy

Ausência de JWT em um caminho não protegido

Certifique-se de que uma requisição sem JWT para um caminho fora das regras de correspondência retorna 200 OK:

curl -I http://<IP address of the ASM gateway>/api/v1/products/1

Resposta esperada:

HTTP/1.1 200 OK
content-type: application/json
content-length: 195
server: istio-envoy
date: Tue, 17 Jan 2023 08:55:10 GMT
x-envoy-upstream-service-time: 16

Resumo dos resultados esperados

Cenário

Caminho

JWT

Resultado esperado

JWT válido em um caminho protegido

/productpage

Válido

200 OK -- acesso permitido

Ausência de JWT em um caminho protegido

/productpage

Nenhum

403 Forbidden -- acesso negado

JWT inválido em um caminho protegido

/productpage

Inválido

401 Unauthorized -- acesso negado

Ausência de JWT em um caminho não protegido

/api/v1/products/1

Nenhum

200 OK -- acesso permitido

Tópicos relacionados