Adición de varios servidores de autenticación al mismo despliegue de API
Un requisito común es autenticar las solicitudes enviadas al mismo despliegue de API de diferentes formas. Por ejemplo, puede que desee que una solicitud entrante de un cliente de API se envíe a una función de autorizador para la autenticación. En cambio, puede que desee que un token web JSON (JWT) incluido en una solicitud entrante de un cliente de API diferente se valide con un proveedor de identidad. Para mayor comodidad, estos diferentes tipos de autenticación y autorización (función de autorizador, autenticación JWT) se denominan "servidores de autenticación".
- funciones de autorizador (para obtener más información sobre las funciones de autorizador, consulte Transferencia de tokens a funciones de autorizador para agregar autenticación y autorización a despliegues de API)
- Tokens web JSON (JWT) validados con un proveedor de identidad (consulte Validación de tokens para agregar autenticación y autorización a despliegues de API).
Al definir varios servidores de autenticación para el mismo despliegue de API, cree reglas para permitir que el gateway de API seleccione dinámicamente qué servidor de autenticación utilizar para autenticar solicitudes, en función de un elemento de la solicitud original.
Para permitir que el gateway de API seleccione dinámicamente el servidor de autenticación correcto, utilice las siguientes variables de contexto para capturar elementos de la solicitud:
request.auth[<key>]
donde<key>
es el nombre de una reclamación incluida en un token de JWT.request.headers[<key>]
donde<key>
es el nombre de una cabecera incluida en la solicitud a la API.request.host
como nombre del host al que se ha enviado la solicitud original.request.path[<key>]
donde<key>
es el nombre de un parámetro de ruta de acceso definido en la especificación de despliegue de API.request.query[<key>]
donde<key>
es el nombre de un parámetro de consulta incluido en la solicitud a la API.request.subdomain[<key>]
, donde<key>
es la parte final del nombre de host que se debe ignorar al capturar la parte inicial del nombre de host al que se ha enviado la solicitud original.
Tenga en cuenta que si una variable de contexto tiene varios valores, solo se utiliza el primer valor al seleccionar el servidor de autenticación. Para obtener más información sobre las variables de contexto, consulte Agregación de variables de contexto a políticas y definiciones de backend HTTP.
Puede configurar varios servidores de autenticación para el mismo despliegue de API en una especificación de despliegue de API:
- Uso de la consola.
- Edición de un archivo JSON.
Notas sobre la coincidencia de reglas del servidor de autenticación
Al crear las reglas para determinar qué servidor de autenticación utilizar, puede especificar el grado de coincidencia del valor de variable de contexto con un valor determinado para que la solicitud se direccione a un servidor de autenticación concreto. Puede necesitar una coincidencia exacta o puede especificar un valor que empiece por un comodín o que termine por él. El gateway de API evalúa las reglas en el orden especificado (las reglas de coincidencia exacta primero, seguidas de las reglas comodín) y utiliza la primera regla de coincidencia. También puede especificar una regla por defecto que utilizar si el valor de la variable de contexto no coincide con ninguna regla del servidor de autenticación. Si no se especifica ninguna regla como valor por defecto y el valor de variable de contexto en una solicitud entrante no coincide con ninguna regla del servidor de autenticación, la solicitud devuelve un error. El orden de prioridad para determinar qué regla del servidor de autenticación (y, por lo tanto, qué servidor de autenticación) utilizar se puede resumir como:
- Si el valor de la variable de contexto coincide exactamente con el valor de una regla, utilice esa regla.
- De lo contrario, si el valor de la variable de contexto coincide con el valor de una regla que empieza o termina con un comodín, utilice la primera regla que contenga un comodín que coincida.
- De lo contrario, si se especifica una regla como regla por defecto, utilice esa regla.
- De lo contrario, devolverá una respuesta de error
401 Unauthorized
.
Uso de la consola para agregar varios servidores de autenticación al mismo despliegue de API
Para agregar varios servidores de autenticación para el mismo despliegue de API a una especificación de despliegue de API mediante la consola:
-
Cree o actualice un despliegue de API con la consola, seleccione la opción Desde cero e introduzca los detalles en la página Información básica.
Para obtener más información, consulte Despliegue de una API en un gateway de API mediante la creación de un despliegue de API y Actualización de un gateway de API.
- Seleccione Siguiente para mostrar la página Autenticación.
- Seleccione Autenticación múltiple para especificar que desea que las solicitudes de autenticación se enruten a diferentes servidores de autenticación, según la variable de contexto y las reglas que introduzca:
- En la lista Selector, seleccione la tabla de contexto (que contiene la variable de contexto) que se utilizará al determinar el servidor de autenticación al que enviar la solicitud de autenticación, de la siguiente manera:
- Autenticación: utilice el valor de una reclamación incluida en un JWT (y guardada en la tabla de contexto
request.auth
) para determinar el servidor de autenticación. Tenga en cuenta que si selecciona Autenticación, debe especificar servidores de autenticación de tipo JSON Web Token (JWT) para todas las reglas de servidor de autenticación en el despliegue de API. Si selecciona Autenticación en la lista Selector, también debe tener en cuenta que la ubicación de los JWT debe ser la misma para todos los servidores de autenticación de JSON Web Token (JWT) (ya sea la misma cabecera de solicitud y esquema de autorización, o el mismo parámetro de consulta). - Cabeceras: utilice el valor de una cabecera de la solicitud original (y guardada en la tabla de contexto
request.headers
) para determinar el servidor de autenticación. - Host: utilice el nombre del host al que se ha enviado la solicitud original (extraído del campo de host de la cabecera Host en la solicitud y guardado en la tabla de contexto
request.host
) para determinar el servidor de autenticación. - Ruta: utilice un parámetro de ruta de la solicitud original (y guardado en la tabla de contexto
request.path
) para determinar el servidor de autenticación. - Parámetros de consulta: utilice el valor de un parámetro de consulta de la solicitud original (y guardado en la tabla de contexto
request.query
) para determinar el servidor de autenticación. - Subdominio: utilice la parte inicial del nombre de host al que se envió la solicitud original (solo esa parte del nombre de host no especificada como clave y guardada en la tabla de contexto
request.subdomain
) para determinar el servidor de autenticación. Tenga en cuenta que la clave es la parte final del nombre de host que no se debe utilizar.
- Autenticación: utilice el valor de una reclamación incluida en un JWT (y guardada en la tabla de contexto
- En función de la tabla de contexto seleccionada, introduzca el nombre de la clave que se va a utilizar al determinar el servidor de autenticación al que se va a enviar la solicitud de autenticación.
- En la lista Selector, seleccione la tabla de contexto (que contiene la variable de contexto) que se utilizará al determinar el servidor de autenticación al que enviar la solicitud de autenticación, de la siguiente manera:
- Seleccione Definir política para introducir una regla para la variable de contexto que, si se cumple, enruta la solicitud de autenticación al servidor de autenticación definido.
- Introduzca los detalles de la regla del servidor de autenticación de la siguiente manera:
- Nombre: introduzca un nombre para la regla del servidor de autenticación. Utilice el nombre que introduzca para identificar el servidor de autenticación al hacer referencia a logs y métricas. El nombre debe ser único en todas las reglas del servidor de autenticación definidas para el despliegue de API.
- Tipo de coincidencia: especifique la precisión con la que el valor de la variable de contexto debe coincidir con un valor que introduzca para que la solicitud se direccione a este servidor de autenticación. Seleccione Cualquiera de si la variable de contexto debe coincidir exactamente con el valor del campo Valores. Seleccione Comodín si la variable de contexto debe coincidir con un valor del campo Expresión que contenga comodines. La coincidencia de valores no distingue entre mayúsculas y minúsculas si selecciona Cualquiera de y si selecciona Comodín.
- Valores: (se muestra si ha seleccionado Cualquiera de en el campo Tipo de coincidencia). Especifique un valor (o varios valores en una lista separada por comas) que la variable de contexto debe coincidir exactamente. Tenga en cuenta que la coincidencia no distingue entre mayúsculas y minúsculas si ha seleccionado Cualquiera de. Tenga en cuenta también que los valores deben ser únicos en una única regla de servidor de autenticación y en todas las reglas de servidor de autenticación definidas para el despliegue de API.
- Expresión: (se muestra si ha seleccionado Comodín en el campo Tipo de coincidencia) Especifique un valor que empiece por o termine por un comodín que la variable de contexto debe coincidir. Utilice el comodín
*
(asterisco) para indicar cero o más caracteres y/o el comodín+
(signo más) para indicar uno o más caracteres. Tenga en cuenta que la coincidencia distingue entre mayúsculas y minúsculas si ha seleccionado Comodín. Tenga en cuenta que no puede incluir más de un comodín en un valor y no puede incluir un comodín en el medio de un valor. - Convertir en valor por defecto: especifique si desea utilizar el servidor de autenticación definido para esta regla si ninguna otra regla del servidor de autenticación coincide con el valor de la variable de contexto. Solo puede especificar una regla de servidor de autenticación como valor por defecto para un despliegue de API. Si no se marca ninguna regla como valor por defecto y el valor de la variable de contexto en una solicitud entrante no coincide con ninguna regla del servidor de autenticación definida para un despliegue de API, la solicitud devuelve una respuesta de error
401 Unauthorized
.
-
Seleccione o anule la selección de la casilla de control Activar acceso anónimo para especificar si los usuarios finales no autenticados (es decir, anónimos) pueden acceder a rutas en el despliegue de API.
Por defecto, esta opción no está seleccionada. Si desea que los usuarios anónimos no puedan acceder a rutas, no seleccione esta opción. Tenga en cuenta que si selecciona esta opción, también deberá especificar explícitamente cada ruta en la que se permite el acceso anónimo, seleccionando Anónimo como Tipo de autorización en la política de autorización de cada ruta.
- Introduzca los detalles para el servidor de autenticación de la siguiente manera:
- En el campo Tipo de autenticación, seleccione Token web JSON (JWT) o Función de autorizador como servidor de autenticación al que enrutar la solicitud de autenticación si se cumple la regla introducida.
Tenga en cuenta que si ha seleccionado Autenticación en la lista Selector, debe seleccionar JSON Web Token (JWT) como tipo de servidor de autenticación. Si seleccionó Autenticación en la lista Selector, también tenga en cuenta que la ubicación de los JWT debe ser la misma para todos los servidores de autenticación de JSON Web Token (JWT) (ya sea la misma cabecera de solicitud y el mismo esquema de autorización, o el mismo parámetro de consulta).
- Introduzca los detalles del servidor de autenticación seleccionado. Los detalles que se deben introducir dependerán del tipo de servidor de autenticación seleccionado:
- Para un servidor de autenticación de JSON Web Token (JWT), consulte Uso de la consola para agregar políticas de solicitud de autorización y autenticación de token.
- Para un servidor de autenticación de función de autorizador, especifique el nombre de la función de autorizador, la aplicación de OCI Functions que la contiene y, a continuación, seleccione Función de autorizador de varios argumentos o Función de autorizador de un solo argumento. Para obtener más información, consulte:
- Seleccione Definir para crear el servidor de autenticación y la regla asociada.
- En el campo Tipo de autenticación, seleccione Token web JSON (JWT) o Función de autorizador como servidor de autenticación al que enrutar la solicitud de autenticación si se cumple la regla introducida.
- Opcionalmente, vuelva a seleccionar Definir política para definir servidores de autenticación adicionales y reglas asociadas.
- Seleccione Siguiente para introducir detalles de rutas individuales en el despliegue de API en la página Rutas.
- Seleccione Guardar cambios y, a continuación, seleccione Siguiente para revisar los detalles introducidos para el despliegue de API.
- Seleccione Crear o Guardar cambios para crear o actualizar el despliegue de API.
- (Opcional) Confirme que la API se ha desplegado correctamente llamándola. Para ello, consulte Llamada a una API desplegada en un gateway de API.
Edición de un archivo JSON para agregar varios servidores de autenticación al mismo despliegue de API
Para agregar varios servidores de autenticación para el mismo despliegue de API a una especificación de despliegue de API en un archivo JSON:
-
Con el editor de JSON de su elección, cree una nueva especificación de despliegue de API (consulte Creación de una especificación de despliegue de API) con el formato:
{ "requestPolicies": { "dynamicAuthentication": { "selectionSource": { "selector": "<context-table-key>", "type": "SINGLE" }, "authenticationServers": [ { "key": { "type": "<ANY_OF|WILDCARD>", "values": ["<context-variable-value>"], "isDefault": "<true|false>", "name": "<rule-name>" }, "authenticationServerDetail": { "type": "<authentication-server-type>", "<auth-server-attribute-name>": "<auth-server-attribute-value>", ... "<auth-server-attribute-name>": "<auth-server-attribute-value>" } } ] } }, "routes": [] }
donde:
"dynamicAuthentication"
especifica que desea que el gateway de API seleccione dinámicamente qué servidor de autenticación utilizar para autenticar solicitudes, en función de un elemento de la solicitud."selector": "<context-table-key>"
especifica la tabla de contexto (y la clave, si procede) a partir de la cual se obtiene el valor de variable de contexto que determina el servidor de autenticación al que se enviarán las solicitudes de autenticación, de la siguiente forma:request.auth[<key>]
Utilice el valor de una reclamación incluida en un token web JSON (JWT) para determinar el servidor de autenticación.<key>
es el nombre de la reclamación. Por ejemplo,request.auth[tenant]
. Tenga en cuenta que si especificarequest.auth[<key>]
, debe especificar servidores de autenticación de tipoJWT_AUTHENTICATION
para todas las reglas del servidor de autenticación en el despliegue de API. Si especificarequest.auth[<key>]
, tenga en cuenta también que la ubicación de los JWT debe ser la misma para todos los servidores de autenticación (ya sea la misma cabecera de solicitud y esquema de autorización o el mismo parámetro de consulta).request.headers[<key>]
Utilice el valor de una cabecera de la solicitud original para determinar el servidor de autenticación.<key>
es el nombre de la cabecera. Por ejemplo,request.headers[Accept]
request.host
Utilice el nombre del host al que se ha enviado la solicitud original (extraído del campo de host de la cabecera Host en la solicitud) para determinar el servidor de autenticación.request.path[<key>]
Utilice un parámetro de ruta de acceso de la solicitud original para determinar el servidor de autenticación.<key>
es el nombre del parámetro de ruta de acceso. Por ejemplo,request.path[region]
request.query[<key>]
Utilice el valor de un parámetro de consulta de la solicitud original para determinar el servidor de autenticación.<key>
es el nombre del parámetro de consulta. Por ejemplo,request.query[state]
request.subdomain[<key>]
Utilice la parte inicial del nombre de host al que se ha enviado la solicitud original (solo esa parte del nombre de host no especificada como clave) para determinar el servidor de autenticación. Tenga en cuenta que<key>
es la parte final del nombre de host que no se va a utilizar. Por ejemplo,request.subdomain[example.com]
"type": "SINGLE"
especifica que desea utilizar una única variable de contexto para seleccionar dinámicamente el servidor de autenticación."key": {...}
especifica la regla que se debe cumplir para enviar una solicitud al servidor de autenticación especificado por"authenticationServerDetail": {…}
."type": "<ANY_OF|WILDCARD>"
especifica el grado de coincidencia entre el valor de la variable de contexto identificada por<context-table-key>
y el valor introducido para<context-variable-value>
para que la solicitud se envíe al servidor de autenticación especificado por"authenticationServerDetail": {…}
. EspecifiqueANY_OF
si el valor de la variable de contexto identificada por<context-table-key>
debe coincidir exactamente con el valor especificado para<context-variable-value>
. EspecifiqueWILDCARD
si el valor de la variable de contexto identificada por<context-table-key>
debe coincidir con un valor que contenga comodines que especifique para<context-variable-value>
. La coincidencia de valores no es sensible a mayúsculas/minúsculas si especificaANY_OF
y sensible a mayúsculas/minúsculas si especificaWILDCARD
.<context-variable-value>
es un valor que posiblemente coincida con el valor de la variable de contexto identificada por<context-table-key>
. Puede incluir varias entradas"<context-variable-value>"
en la matrizvalues:[...]
, separadas por comas. La solicitud se envía al servidor de autenticación especificado por"authenticationServerDetail": {…}
si los valores coinciden, de la siguiente manera:- Si ha especificado
"type": "ANY_OF"
, los valores deben coincidir exactamente. Tenga en cuenta que los valores deben ser únicos en una única regla del servidor de autenticación y en todas las reglas del servidor de autenticación definidas para un despliegue de API. La coincidencia de valores no es sensible a mayúsculas/minúsculas si ha especificadoANY_OF
. - Si ha especificado
"type": "WILDCARD"
, puede especificar un valor para<context-variable-value>
que empiece por, o termine por, un comodín. Utilice el comodín*
(asterisco) para indicar cero o más caracteres y/o el comodín+
(signo más) para indicar uno o más caracteres. Tenga en cuenta que no puede incluir más de un comodín en un valor y no puede incluir un comodín en medio de un valor. La coincidencia de valores es sensible a mayúsculas/minúsculas si ha especificadoWILDCARD
.
"selector": "request.headers[Accept]"
"type": "ANY_OF"
"values": ["application/xml"]
- Si ha especificado
"isDefault": "<true|false>"
es un valor booleano opcional (true
ofalse
) que indica si se debe utilizar el servidor de autenticación para esta regla si ninguna otra regla del servidor de autenticación coincide con el valor de variable de contexto. Si no se especifica, se asume"isDefault": "false"
. Solo puede especificar una regla de servidor de autenticación como valor por defecto para un despliegue de API. Si no se marca ninguna regla como valor por defecto y el valor de variable de contexto en una solicitud entrante no coincide con ninguna regla del servidor de autenticación definida para un despliegue de API, la solicitud devuelve una respuesta de error401 Unauthorized
."name": "<rule-name>"
especifica un nombre para la regla. Utilice este nombre para identificar el servidor de autenticación al hacer referencia a logs y métricas. El nombre debe ser único en todas las reglas del servidor de autenticación definidas para el despliegue de API."type": "<authentication-server-type>"
especifica el tipo de servidor de autenticación. Los valores válidos sonJWT_AUTHENTICATION
yCUSTOM_AUTHENTICATION
. Tenga en cuenta que si ha especificadorequest.auth[<key>]
, debe especificar servidores de autenticación de tipoJWT_AUTHENTICATION
para todas las reglas del servidor de autenticación en el despliegue de API. Si ha especificadorequest.auth[<key>]
, tenga en cuenta también que la ubicación de los JWT debe ser la misma para todos los servidores de autenticación (ya sea la misma cabecera de solicitud y esquema de autorización o el mismo parámetro de consulta)."<auth-server-attribute-name>": "<auth-server-attribute-value>"
son atributos y valores de atributo para el tipo de servidor de autenticación especificado. Los atributos y valores de atributo que se deben introducir dependerán del tipo de servidor de autenticación especificado:- para un servidor de autenticación
JWT_AUTHENTICATION
, consulte Edición de un archivo JSON para agregar políticas de solicitud de autorización y autenticación de token - para un servidor de autenticación
CUSTOM_AUTHENTICATION
, consulte:
- para un servidor de autenticación
Por ejemplo, la siguiente especificación de despliegue de API incluye la selección del servidor de autenticación dinámica que maneja las solicitudes de autenticación según el valor del parámetro de consulta
vehicle-type
transferido en la solicitud. Para obtener una explicación más detallada de este ejemplo, consulte el Example 1: Select JWT or serverless function as authentication server using a query parameter (incluyendo la selección de comodines y el valor por defecto).{ "requestPolicies": { "dynamicAuthentication": { "selectionSource": { "selector": "request.query[vehicle-type]", "type": "SINGLE" }, "authenticationServers": [ { "key": { "type": "ANY_OF", "values": ["car"], "isDefault": "true", "name": "authServer1" }, "authenticationServerDetail": { "type": "JWT_AUTHENTICATION", "tokenHeader": "Authorization", "tokenAuthScheme": "Bearer", "isAnonymousAccessAllowed": true, "issuers": ["https://recommend-app.eu.auth0.com/"], "audiences": ["api.dev.io"], "maxClockSkewInSeconds": 0, "verifyClaims": [ { "key": "gty", "value": ["client-credentials"], "isRequired": true } ], "publicKeys": { "type": "REMOTE_JWKS", "uri": "https://recommend-app.eu.auth0.com/.well-known/jwks.json", "maxCacheDurationInHours": 1 } } }, { "key": { "type": "WILDCARD", "expression": "mini*", "name": "authServer2" }, "authenticationServerDetail": { "type": "CUSTOM_AUTHENTICATION", "functionId": "ocid1.fnfunc.oc1.iad.aaaaaaaaac______dfa", "isAnonymousAccessAllowed": true } } ] } }, "routes": [] }
- Guarde el archivo JSON que contiene la especificación de despliegue de API.
-
Utilice la especificación de despliegue de API al crear o actualizar un despliegue de API de las siguientes formas:
- Especificando el archivo JSON en la consola al seleccionar la opción Cargar API existente.
- Especificando el archivo JSON en una solicitud para la API REST de gateway de API.
Para obtener más información, consulte Despliegue de una API en un gateway de API mediante la creación de un despliegue de API y Actualización de un gateway de API.
- (Opcional) Confirme que la API se ha desplegado correctamente llamándola. Para ello, consulte Llamada a una API desplegada en un gateway de API.
Ejemplos
Ejemplo 1: Selección de JWT o función sin servidor como servidor de autenticación mediante un parámetro de consulta (incluida la selección de comodines y el valor por defecto)
En este ejemplo, el gateway de API determina el servidor de autenticación al que enviar la solicitud de autenticación según el valor del parámetro de consulta vehicle-type
transferido en la solicitud. Si el parámetro de consulta vehicle-type
tiene el valor car
, el JWT de la cabecera de autorización de la solicitud se valida mediante la recuperación de claves de verificación públicas del proveedor de identidad https://recommend-app.eu.auth0.com
. Si el parámetro de consulta vehicle-type
tiene un valor que empieza por mini
, se envía una solicitud de autenticación a una función sin servidor en OCI Functions para su procesamiento. Si el valor del parámetro de consulta vehicle-type
no es car
ni mini*
, el gateway de API asume por defecto que hay un JWT en la cabecera de autorización de la solicitud e intenta validarlo recuperando claves de verificación públicas del proveedor de identidad https://recommend-app.eu.auth0.com
:
{
"requestPolicies": {
"dynamicAuthentication": {
"selectionSource": {
"selector": "request.query[vehicle-type]",
"type": "SINGLE"
},
"authenticationServers": [
{
"key": {
"type": "ANY_OF",
"values": ["car"],
"isDefault": "true",
"name": "authServer1"
},
"authenticationServerDetail": {
"type": "JWT_AUTHENTICATION",
"tokenHeader": "Authorization",
"tokenAuthScheme": "Bearer",
"isAnonymousAccessAllowed": true,
"issuers": ["https://recommend-app.eu.auth0.com/"],
"audiences": ["api.dev.io"],
"maxClockSkewInSeconds": 0,
"verifyClaims": [
{
"key": "gty",
"value": ["client-credentials"],
"isRequired": true
}
],
"publicKeys": {
"type": "REMOTE_JWKS",
"uri": "https://recommend-app.eu.auth0.com/.well-known/jwks.json",
"maxCacheDurationInHours": 1
}
}
},
{
"key": {
"type": "WILDCARD",
"expression": "mini*",
"name": "authServer2"
},
"authenticationServerDetail": {
"type": "CUSTOM_AUTHENTICATION",
"functionId": "ocid1.fnfunc.oc1.iad.aaaaaaaaac______dfa",
"isAnonymousAccessAllowed": true
}
}
]
}
},
"routes": []
}
Ejemplo 2: Selección del servidor de autenticación JWT mediante reclamaciones de tokens JWT
En este ejemplo, el gateway de API determina el servidor de autenticación al que se enviará la solicitud de autenticación según la reclamación tenant
en un token de JWT transferido en la cabecera Authorization de la solicitud. Dos tokens de JWT de ejemplo siguen la especificación de despliegue de API:
{
"pathPrefix": "/deployment-path",
"specification": {
"requestPolicies": {
"dynamicAuthentication": {
"selectionSource": {
"selector": "request.auth[tenant]",
"type": "SINGLE"
},
"authenticationServers": [
{
"key": {
"values": ["cars"],
"type": "ANY_OF",
"name": "authServer1"
},
"authenticationServerDetail": {
"type": "JWT_AUTHENTICATION",
"tokenHeader": "Authorization",
"tokenAuthScheme": "Bearer",
"isAnonymousAccessAllowed": true,
"issuers": ["https://tenant-2.us.auth0.com/"],
"audiences": ["https://tenant-2"],
"maxClockSkewInSeconds": 0,
"verifyClaims": [
{
"key": "gty",
"value": ["client-credentials"],
"isRequired": true
}
],
"publicKeys": {
"type": "REMOTE_JWKS",
"uri": "https://car.us.auth0.com/.well-known/jwks.json",
"maxCacheDurationInHours": 1
}
}
},
{
"key": {
"values": ["trucks"],
"type": "ANY_OF",
"name": "authServer2"
},
"authenticationServerDetail": {
"type": "JWT_AUTHENTICATION",
"tokenHeader": "Authorization",
"tokenAuthScheme": "Bearer",
"isAnonymousAccessAllowed": true,
"issuers": ["https://tenant-2.us.auth0.com/"],
"audiences": ["https://tenant-2"],
"maxClockSkewInSeconds": 0,
"verifyClaims": [
{
"key": "gty",
"value": ["client-credentials"],
"isRequired": true
}
],
"publicKeys": {
"type": "REMOTE_JWKS",
"uri": "https://truck.us.auth0.com/.well-known/jwks.json",
"maxCacheDurationInHours": 1
}
}
}
]
}
}
},
"loggingPolicies": {},
"routes": []
}
Al autenticar una solicitud que tiene el siguiente token de JWT en la cabecera Authorization, el gateway de API recupera el juego de claves web JSON (JWKS) para verificar la firma de https://car.us.auth0.com/.well-known/jwks.json
.
{
"iss": "https://tenant-2.us.auth0.com/",
"sub": "aPz45Gbdfy6dgh30sdfER6cgjkhjx8a@clients",
"aud": "https://tenant-2",
"iat": 1641282986,
"exp": 1641369386,
"azp": "aPz45Gbdfy6dgh30sdfER6cgjkhjx8a",
"gty": "client-credentials",
"tenant":"cars"
}
Al autenticar una solicitud que tiene el siguiente token de JWT en la cabecera Authorization, el gateway de API recupera el juego de claves web JSON (JWKS) para verificar la firma de https://truck.us.auth0.com/.well-known/jwks.json
.
{
"iss": "https://tenant-2.us.auth0.com/",
"sub": "aPz45Gbdfy6dgh30sdfER6cgjkhjx8a@clients",
"aud": "https://tenant-2",
"iat": 1641282986,
"exp": 1641369386,
"azp": "aPz45Gbdfy6dgh30sdfER6cgjkhjx8a",
"gty": "client-credentials",
"tenant":"trucks"
}