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. |
|
|
Configuración de autenticación (con JWT como ejemplo) |
|
|
|
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.
|
|
Crear un consumidor
Inicie sesión en la consola de MSE. En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, elija Cloud-native Gateway > Gateways.
En la página Gateways, haga clic en el nombre de la puerta de enlace de destino.
En el panel de navegación izquierdo, haga clic en Security Management > Consumer Authentication.
Haga clic en el botón Create Consumer.
-
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
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.NotaLos 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
PAYLOADdel JWKS.
Generar un token con una clave asimétrica
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) seaRSA. Incluya los parámetros RSA estándar comop,q,dye, coneestablecido enAQAB. En la sección de configuración JWT Token, establezca Type en HEADER, Key enAuthorization, Prefix enBearery 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
PAYLOADdel JWKS.
Habilitar la autenticación de rutas
Inicie sesión en la consola de MSE. En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, elija Cloud-native Gateway > Gateways.
En la página Gateways, haga clic en el ID de la puerta de enlace.
En el panel de navegación izquierdo, haga clic en Routes. A continuación, haga clic en la pestaña Routes.
En la columna Actions de la ruta de destino, haga clic en Policies.
-
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
Inicie sesión en la consola de MSE. En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, elija Cloud-native Gateway > Gateways.
En la página Gateways, haga clic en el ID de la puerta de enlace.
En el panel de navegación izquierdo, haga clic en Security Management > Consumer Authentication.
En la columna Actions del consumidor de destino, haga clic en Authorization.
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.