Todos los productos
Search
Centro de documentos

Microservices Engine:Configurar la autenticación de consumidores

Última actualización: Sep 10, 2026

La puerta de enlace nativa de la nube permite configurar la autenticación para las rutas y otorgar autorización a consumidores específicos para que accedan a ellas. En este tema se describe cómo configurar la autenticación de consumidores.

Contexto

La autenticación global es adecuada para escenarios ToC, como el inicio de sesión unificado. La autenticación de rutas con autorización de consumidores resulta más indicada para escenarios ToB, como otorgar acceso a una API a los socios comerciales.

Elemento de comparación

Autenticación global

Autenticación de rutas + autorización de consumidores

Escenarios

Escenarios ToC, como la autenticación de inicio de sesión unificado.

Escenarios ToB, como otorgar acceso a una API a los socios comerciales.

Diferencia principal

La autenticación y la autorización se habilitan de forma conjunta.

Después de habilitar la autenticación, debe configurar la autorización por separado.

Entrada de configuración

Security Management > Global Authentication.

  1. Routes > Policies > Authentication.

  2. Security Management > Consumer Authentication.

Configuración de autenticación (con JWT como ejemplo)

  1. Al crear la configuración, introduzca los ajustes globales de JWKS.

  2. Introduzca los campos iss y sub como criterios para validar los tokens JWT.

  1. Al crear la configuración de un consumidor, introduzca los ajustes de JWKS correspondientes a ese consumidor.

  2. Introduzca un identificador de consumidor para determinar si un token JWT pertenece a dicho consumidor. De forma predeterminada, se utiliza el campo payload llamado uid, pero puede personalizarlo.

Configuración de autorización

Al crear la configuración, introduzca una lista de Domain Name y Path para la lista negra o la lista blanca.

  • Blacklist: los elementos Domain Name y Path de la lista requieren autenticación. El resto se puede acceder directamente sin autenticarse.

  • Whitelist: los elementos Domain Name y Path de la lista no requieren autenticación. Todos los demás sí la necesitan.

  1. En Policies de la ruta, habilite Authentication para dicha ruta.

  2. En Consumer Authentication, asocie la ruta que tiene la autenticación habilitada para completar la autorización.

Crear un consumidor

  1. Inicie sesión en la consola de MSE. En la barra de navegación superior, seleccione una región.

  2. En el panel de navegación izquierdo, elija Cloud-native Gateway > Gateways.

  3. En la página Gateways, haga clic en el nombre de la puerta de enlace de destino.

  4. En el panel de navegación izquierdo, haga clic en Security Management > Consumer Authentication.

  5. Haga clic en el botón Create Consumer.

  6. Configure los parámetros y, a continuación, haga clic en OK.

    A continuación se describen los parámetros.

    Elemento de configuración

    Descripción

    Consumer Name

    Introduzca un nombre personalizado para el consumidor.

    Consumer Description

    Describa el consumidor.

    Authentication Type

    Los métodos de autenticación compatibles actualmente con el consumidor.

    Key Type

    • Symmetric Key: genera una configuración JWKS predeterminada (única por consumidor) que contiene la clave utilizada para cifrar o descifrar tokens.

    • Asymmetric Key: requiere que proporcione una configuración JWKS completa. Utilice su clave privada para firmar el token. La puerta de enlace usa la clave pública de su JWKS para verificarlo.

    JWKS

    Establezca la configuración JWKS. Para obtener información sobre la especificación JWKS, consulte JSON Web Key (JWK).

    JWT Token

    Configure los ajustes del token JWT.

    • Type: el tipo de parámetro del token. El valor predeterminado es Header.

    • Key: el nombre del parámetro del token.

    • Prefix: el prefijo del nombre del parámetro del token. De forma predeterminada, los tokens se validan en el encabezado Authorization Header con el prefijo Bearer; por ejemplo: Authorization: Bearer token.

    • Enable Passthrough: si lo selecciona, el parámetro del token se reenvía al servicio de backend.

    Consumer Identity in JWT Payload

    Especifique la clave y el valor en el payload del JWT para identificar a este consumidor. De forma predeterminada, la clave es uid y el valor es una cadena aleatoria. Puede modificar estos valores.

    El payload del token JWT debería tener el siguiente aspecto:

    {
      "uid": "11215ac069234abcb8944232b79ae711"
    }

Métodos de generación de tokens

Esta sección muestra un ejemplo en Java. Si utiliza otros lenguajes, busque herramientas equivalentes para generar pares de claves.

Cree un nuevo proyecto de Maven y agregue la siguiente dependencia:

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

Generar un token con la clave simétrica predeterminada

Expand to view code

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);
    }
}

Notas sobre la configuración del código:

  • privateKeyJson: es el JWKS utilizado al crear el consumidor. Regístrelo durante la creación o recupérelo después desde la sección Authentication Configuration, en la pestaña Basic Settings de la página de detalles del consumidor.

  • Establezca el identificador del consumidor con claims.setClaim("uid", "11215ac069234abcb8944232b79ae711"). Este valor coincide con el identificador de consumidor predeterminado generado en la consola, aunque puede personalizarlo. Consulte el valor actual en el campo Consumer Identifier, dentro de Authentication Configuration en la pestaña Basic Settings de la página de detalles del consumidor.

  • Establezca el algoritmo de cifrado con jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256). Debe coincidir con el algoritmo especificado en su JWKS.

    Nota

    Los algoritmos compatibles incluyen ES256, ES384, ES512, RS256, RS384, RS512, PS256, PS384, PS512, HS256, HS384, HS512 y EdDSA.

    Si elige Symmetric key en Key Type, introduzca un JWKS con las siguientes propiedades de clave: "kty":"oct", "k":"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQ0d_D04G0kEY" y "alg":"HS256".

    Para el cifrado simétrico, decodifique el valor "k":

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

    También puede recuperar el identificador del consumidor desde el campo Consumer Identifier, dentro de Authentication Configuration en la pestaña Basic Settings de la página de detalles del consumidor.

  • Establezca el tiempo de expiración. Debe ser inferior a 7 días. Genere un nuevo token tras la expiración para mantener la seguridad.

    ...
        NumericDate date = NumericDate.now();
        date.addSeconds(120*60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
    ...
  • Según sus requisitos de negocio, puede agregar parámetros personalizados al PAYLOAD del JWKS.

Generar un token con una clave asimétrica

Expand to view code

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);
    }
}

Notas sobre la configuración del código:

  • Configure privateKeyJson, el identificador del consumidor y el tiempo de expiración tal como se describe para el cifrado simétrico.

  • Establezca el algoritmo de cifrado con jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256). Debe coincidir con el algoritmo de su JWKS.

    En el campo de configuración JWKS de la consola, introduzca una clave asimétrica en formato JSON cuyo tipo de clave (kty) sea RSA. Incluya los parámetros RSA estándar como p, q, d y e, con e establecido en AQAB. En la sección de configuración JWT Token, establezca Type en HEADER, Key en Authorization, Prefix en Bearer y marque Pass-through.

    Para el cifrado asimétrico, firme el token con su clave privada:

    ...
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
        PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey();
        jws.setKey(privateKey);
    ...
  • Según sus necesidades de negocio, puede agregar parámetros personalizados al PAYLOAD del JWKS.

Habilitar la autenticación de rutas

  1. Inicie sesión en la consola de MSE. En la barra de navegación superior, seleccione una región.

  2. En el panel de navegación izquierdo, elija Cloud-native Gateway > Gateways.

  3. En la página Gateways, haga clic en el ID de la puerta de enlace.

  4. En el panel de navegación izquierdo, haga clic en Routes. A continuación, haga clic en la pestaña Routes.

  5. En la columna Actions de la ruta de destino, haga clic en Policies.

  6. En la pestaña Policies, haga clic en Authentication. Después de configurar los ajustes, haga clic en Save.

    Parámetro

    Descripción

    Authentication Method

    El método de autenticación utilizado para esta ruta.

    Enabling Status

    Cuando está habilitado, la autenticación y la autorización surten efecto.

Otorgar acceso a un consumidor

  1. Inicie sesión en la consola de MSE. En la barra de navegación superior, seleccione una región.

  2. En el panel de navegación izquierdo, elija Cloud-native Gateway > Gateways.

  3. En la página Gateways, haga clic en el ID de la puerta de enlace.

  4. En el panel de navegación izquierdo, haga clic en Security Management > Consumer Authentication.

  5. En la columna Actions del consumidor de destino, haga clic en Authorization.

  6. En la pestaña Consumer Authorization, haga clic en Associate Route, seleccione las rutas que desea autorizar para este consumidor y, a continuación, haga clic en OK.