Todos os produtos
Search
Central de documentação

Microservices Engine:Configurar autenticação de consumidor

Última atualização: Jun 28, 2026

O gateway nativo da nuvem permite configurar a autenticação para rotas e autorizar consumidores específicos a acessá-las. Este tópico descreve como configurar a autenticação de consumidor.

Informações básicas

A autenticação global é adequada para cenários ToC, como login unificado. A autenticação de rota com autorização de consumidor é mais indicada para cenários ToB, como a concessão de acesso a API para parceiros.

Item de comparação

Autenticação global

Autenticação de rota + autorização de consumidor

Cenários

Cenários ToC, como autenticação de login unificado.

Cenários ToB, como concessão de acesso a API para parceiros.

Diferença principal

Ativação conjunta de autenticação e autorização.

Após ativar a autenticação, configure a autorização separadamente.

Entrada de configuração

Security Management > Global Authentication.

  1. Routes > Policies > Authentication.

  2. Security Management > Consumer Authentication.

Configuração de autenticação (exemplo com JWT)

  1. Ao criar a configuração, insira as definições globais de JWKS.

  2. Insira os campos iss e sub como critérios para validar tokens JWT.

  1. Ao criar uma configuração de consumidor, insira as definições de JWKS específicas para esse consumidor.

  2. Insira um ID de consumidor para identificar se um JWT pertence a este consumidor. Por padrão, o sistema utiliza o campo payload uid, mas é possível personalizá-lo.

Configuração de autorização

Ao criar a configuração, insira uma lista de Domain Name e Path para a lista de bloqueios ou lista de permissões.

  • Blacklist: O Domain Name e o Path listados exigem autenticação; todos os demais permitem acesso direto sem autenticação.

  • Whitelist: As entradas de Domain Name e Path na lista não exigem autenticação. Todas as outras exigem autenticação.

  1. Nas Policies da rota, ative a Authentication para a rota.

  2. Em Consumer Authentication, associe a rota com autenticação ativada para concluir a autorização.

Criar um consumidor

  1. Faça login no console MSE. Na barra de navegação superior, selecione uma região.

  2. No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways.

  3. Na página Gateways, clique em nome do gateway desejado.

  4. No painel de navegação à esquerda, clique em Security Management > Consumer Authentication.

  5. Clique em Create Consumer.

  6. Configure os parâmetros e clique em OK.

    A tabela a seguir descreve os parâmetros.

    Item de configuração

    Descrição

    Consumer Name

    Insira um nome personalizado para o consumidor.

    Consumer Description

    Descreva o consumidor.

    Authentication Type

    Métodos de autenticação compatíveis com o consumidor.

    Key Type

    • Symmetric Key: Gera uma configuração JWKS padrão (única por consumidor) contendo a chave usada para criptografar ou descriptografar tokens.

    • Asymmetric Key: Exige o fornecimento de uma configuração JWKS completa. Use sua chave privada para assinar o token. O gateway usa a chave pública do seu JWKS para verificá-lo.

    JWKS

    Defina a configuração JWKS. Para obter detalhes sobre a especificação JWKS, consulte JSON Web Key (JWK).

    JWT Token

    Configure as definições do token JWT.

    • Type: Tipo de parâmetro do token. O padrão é Header.

    • Key: Nome do parâmetro do token.

    • Prefix: Prefixo para o nome do parâmetro do token. Por padrão, os tokens são validados no Authorization Header com o prefixo Bearer, por exemplo: Authorization: Bearer token.

    • Enable Passthrough: Se selecionado, o parâmetro do token é repassado ao serviço de backend.

    Consumer Identity in JWT Payload

    Especifique a chave e o valor no payload do JWT para identificar este consumidor. Por padrão, a chave é uid e o valor é uma string aleatória. É possível modificar esses valores.

    O payload do token JWT deve ter o seguinte formato:

    {
      "uid": "11215ac069234abcb8944232b79ae711"
    }

Métodos de geração de token

Esta seção fornece um exemplo em Java. Usuários de outras linguagens podem usar ferramentas equivalentes para gerar pares de chaves.

Crie um novo projeto Maven e adicione a seguinte dependência:

<dependency>
    <groupId>org.bitbucket.b_c</groupId>
    <artifactId>jose4j</artifactId>
    <version>0.7.0</version>
</dependency>

Gerar um token usando a chave simétrica padrão

Expandir para visualizar o código

package org.example;
import java.io.UnsupportedEncodingException;
import java.security.PrivateKey;
import org.jose4j.base64url.Base64;
import org.jose4j.json.JsonUtil;
import org.jose4j.jwk.OctJwkGenerator;
import org.jose4j.jwk.OctetSequenceJsonWebKey;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.NumericDate;
import org.jose4j.keys.HmacKey;
import org.jose4j.lang.JoseException;
import sun.lwawt.macosx.CSystemTray;
public class Main {
    public static void main(String[] args) throws JoseException, UnsupportedEncodingException {
        // Use the example JWKS shown earlier
        String privateKeyJson = "{\n"
                + "    \"k\": \"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQOd_DO4GOkEY\",\n"
                + "    \"kty\": \"oct\",\n"
                + "    \"alg\": \"HS256\",\n"
                + "}";
        JwtClaims claims = new JwtClaims();
        claims.setGeneratedJwtId();
        claims.setIssuedAtToNow();
        // Set expiration time (must be less than 7 days)
        NumericDate date = NumericDate.now();
        date.addSeconds(120*60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
        // Add custom claims; use String values only
        // Set consumer identifier
        claims.setClaim("uid", "11215ac069234abcb8944232b79ae711");
        JsonWebSignature jws = new JsonWebSignature();
        // Set encryption algorithm
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256);
        jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));
        jws.setPayload(claims.toJson());
        String jwtResult = jws.getCompactSerialization();
        System.out.println("Generate Json Web token , result is \n " + jwtResult);
    }
}

Observações sobre a configuração do código:

  • privateKeyJson: Este é o JWKS usado ao criar o consumidor. Anote-o durante a criação ou recupere-o posteriormente na seção Authentication Configuration, na aba Basic Settings da página de detalhes do consumidor.

  • Defina o identificador do consumidor com claims.setClaim("uid", "11215ac069234abcb8944232b79ae711"). Isso corresponde ao ID de consumidor padrão gerado no console, mas pode ser personalizado. Visualize o valor atual no campo Consumer Identifier, em Authentication Configuration, na aba Basic Settings da página de detalhes do consumidor.

  • Defina o algoritmo de criptografia com jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256). Ele deve corresponder ao algoritmo especificado no seu JWKS.

    Nota

    Os algoritmos compatíveis incluem ES256, ES384, ES512, RS256, RS384, RS512, PS256, PS384, PS512, HS256, HS384, HS512 e EdDSA.

    Ao selecionar Symmetric key para Key Type, insira um JWKS com estas propriedades de chave: "kty":"oct", "k":"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQ0d_D04G0kEY" e "alg":"HS256".

    Para criptografia simétrica, decodifique o valor "k":

    jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));

    Também é possível recuperar o identificador do consumidor no campo Consumer Identifier, em Authentication Configuration, na aba Basic Settings da página de detalhes do consumidor.

  • Defina o tempo de expiração. Ele deve ser inferior a 7 dias. Gere um novo token após a expiração para manter a segurança.

    ...
        NumericDate date = NumericDate.now();
        date.addSeconds(120*60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
    ...
  • Conforme seus requisitos de negócio, adicione parâmetros personalizados ao PAYLOAD no JWKS.

Gerar um token usando uma chave assimétrica

Expandir para visualizar o código

package org.example;
import java.io.UnsupportedEncodingException;
import java.security.PrivateKey;
import org.jose4j.base64url.Base64;
import org.jose4j.json.JsonUtil;
import org.jose4j.jwk.OctJwkGenerator;
import org.jose4j.jwk.OctetSequenceJsonWebKey;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.NumericDate;
import org.jose4j.keys.HmacKey;
import org.jose4j.lang.JoseException;
import sun.lwawt.macosx.CSystemTray;
public class Main {
    public static void main(String[] args) throws JoseException, UnsupportedEncodingException {
        // Use the example JWKS shown earlier
        String privateKeyJson = "{\n"
                + "    \"k\": \"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQOd_DO4GOkEY\",\n"
                + "    \"kty\": \"oct\",\n"
                + "    \"alg\": \"HS256\",\n"
                + "}";
        JwtClaims claims = new JwtClaims();
        claims.setGeneratedJwtId();
        claims.setIssuedAtToNow();
        // Set expiration time (must be less than 7 days)
        NumericDate date = NumericDate.now();
        date.addSeconds(120*60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
        // Add custom claims; use String values only
        // Set consumer identifier
        claims.setClaim("uid", "11215ac069234abcb8944232b79ae711");
        JsonWebSignature jws = new JsonWebSignature();
        // Set encryption algorithm
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256);
        jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));
        jws.setPayload(claims.toJson());
        String jwtResult = jws.getCompactSerialization();
        System.out.println("Generate Json Web token , result is \n " + jwtResult);
    }
}

Observações sobre a configuração do código:

  • Configure privateKeyJson, o identificador do consumidor e o tempo de expiração conforme descrito para criptografia simétrica.

  • Defina o algoritmo de criptografia com jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256). Ele deve corresponder ao algoritmo no seu JWKS.

    No campo de configuração JWKS do console, insira uma chave assimétrica formatada em JSON onde o tipo de chave (kty) seja RSA. Inclua parâmetros RSA padrão como p, q, d e e, com e definido como AQAB. Na seção de configuração JWT Token, defina Type como HEADER, Key como Authorization, Prefix como Bearer e marque Pass-through.

    Para criptografia assimétrica, assine o token com sua chave privada:

    ...
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
        PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey();
        jws.setKey(privateKey);
    ...
  • Conforme suas necessidades de negócio, adicione parâmetros personalizados ao PAYLOAD no JWKS.

Ativar autenticação de rota

  1. Faça login no console MSE. Na barra de navegação superior, selecione uma região.

  2. No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways.

  3. Na página Gateways, clique em ID do gateway.

  4. No painel de navegação à esquerda, clique em Routes. Em seguida, clique em aba Routes.

  5. Na coluna Actions da rota desejada, clique em Policies.

  6. Na aba Policies, clique em Authentication. Após configurar, clique em Save.

    Parâmetro

    Descrição

    Authentication Method

    Método de autenticação usado para esta rota.

    Enabling Status

    Quando ativado, a autenticação e a autorização entram em vigor.

Conceder acesso a um consumidor

  1. Faça login no console MSE. Na barra de navegação superior, selecione uma região.

  2. No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways.

  3. Na página Gateways, clique em ID do gateway.

  4. No painel de navegação à esquerda, clique em Security Management > Consumer Authentication.

  5. Na coluna Actions do consumidor desejado, clique em Authorization.

  6. Na aba Consumer Authorization, clique em Associate Route, selecione as rotas a autorizar para este consumidor e clique em OK.