Crear despliegues de gateway de API
Con las funciones listas, puede integrar y probar el mecanismo de autenticación nativa para la validación de JWT con Oracle Identity Cloud Service.
Creación de despliegue del gateway de API con validación de JWT nativa
Al utilizar la función de validación de JWT nativa del gateway de Oracle Cloud Infrastructure, se puede agregar una política de autenticación basada en el token web de Java (JWT) para el despliegue.
Este tipo de JWT permite especificar los datos necesarios para realizar la validación del token de acceso entrante (a través de Cabecera o Parámetro). La política requiere la siguiente información:
- Emisores permitidos: Emisores de tokens. Hay varios servidores OAuth soportados, pero en este caso utilizará
https://identity.oraclecloud.com/
. - Públicos: los recursos a los que se permite el acceso para este token.
- Claves Públicas: Juego de Claves Web Json (JWKS) que se va a utilizar para validar el token, dentro de los emisores y públicos. Se permiten dos tipos de JWKS:
- Claves Estáticas: con esta opción, debe especificar JWKS manualmente mediante el formato JSON, que debería tener las propiedades necesarias según la sección 4 de RFC 7517.
- Claves Remotas: Con esta opción, debe especificar una URL desde la que JWKS se puede consumir mediante REST. Una limitación de esta función es que la URL especificada debe estar sin proteger, ya que esta función no soporta la capacidad de leer URL protegidas para recuperar JWKS.
- Opciones Avanzadas:
- Sesgo máximo en segundos: Si el gateway de API y el proveedor de identidad tienen algunas diferencias de tiempo, este valor permite ajustar el tiempo de la ventana de validez del token para intentar alinear el tiempo entre los dos servicios.
- Reclamaciones: Para verificar las reclamaciones si es necesario del token entrante. Por ejemplo
client_id
reclamación ouser_id
reclamación.
Cree un nuevo nombre de despliegue en el gateway de API con una ruta para acceder a la función creada en los pasos anteriores utilizando el punto final y la validación de JWT. En este ejemplo, el despliegue se denomina: my_jwt_test
.
my_jwt_test
de Despliegue de gateway de API.
Probar Llamada REST de Punto Final
Para probar la nueva llamada REST de punto final, puede utilizar la función Obtener nuevo token de acceso de Postman.
Tenga en cuenta que si utiliza el token generado en los siguientes pasos, no podrá acceder a los puntos finales de Oracle Fusion Applications Cloud Service directamente, porque el token se ha generado con la aplicación Oracle Identity Cloud Service de Oracle Visual Builder y solo puede acceder a Oracle Functions con la configuración actual, según los ámbitos que haya configurado previamente. Además, si utiliza otra aplicación Oracle Identity Cloud Service para generar el token, y esa aplicación no tiene los permisos necesarios para acceder al ámbito de recursos de Oracle Functions, el gateway de API no permitirá la solicitud (devolverá un error 401) porque usted agregó el público del recurso Oracle Identity Cloud Service de Oracle Functions. Si ha agregado las verificaciones de ID de cliente de reclamaciones, el gateway de API solo garantizará que los tokens coincidan con los client_ids de aplicaciones de Oracle Identity Cloud Service especificados.
Utilice los siguientes parámetros para probar:
- Tipo de Asignación: Credenciales de Contraseña: Este tipo de permiso se utiliza para asegurarse de que el nombre de usuario proporcionado será el sujeto del token generado.
- URL de token de acceso: URL de OAuth de instancia de Oracle Identity Cloud Service. Por ejemplo,
https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token
. - Usuario: usuario que existe en Oracle Identity Cloud Service y en Oracle Fusion Applications Cloud Service con los privilegios adecuados en ambos.
- Contraseña: Introduzca la contraseña para este usuario.
- ClientId: ID del recurso de Oracle Functions del cliente de Oracle Identity Cloud Service asociado con Oracle Visual Builder.
- ClientSecret: secreto de cliente del recurso Oracle Functions del cliente de aplicación de Oracle Identity Cloud Service asociado con Oracle Visual Builder
- Ámbito: este ámbito debe coincidir con los recursos proporcionados por la aplicación Oracle Identity Cloud Service de Oracle Functions. Por ejemplo,
https://myservice.apigateway.dc1.oci.customer-oci.com/saasextension
{
"principal": "mary.jane",
"gotPrincipalFrom": "BEARER",
"statusCode": "200",
"response": {
"items": [],
"count": 0,
"hasMore": false,
"limit": 25,
"offset": 0,
"links": [
{
"rel": "self",
"href": "https://myfusionservice.fa.dc1.oraclecloud.com:443/fscmRestApi/resources/11.13.18.05/expenses",
"name": "expenses",
"kind": "collection"
}
]
}
}
Creación opcional de despliegue de gateway de API con autenticación personalizada
Utilice este enfoque si decide utilizar una función de autenticación personalizada para validar el token de portador para llamadas entrantes a puntos finales de gateway de API.
Es la función opcional que ha definido si ha seguido los pasos de la sección Define Opcionalmente una Función de Autenticación en Oracle Cloud Infrastructure.
El siguiente fragmento de código es un archivo JSON de especificación de despliegue de API Oracle Cloud Infrastructure de ejemplo que puede utilizar para desplegar en lugar de utilizar el asistente. Dentro de este archivo, vemos:
- Líneas 1-8: política de solicitud de autenticación. Ésta es la definición que indica que, para cualquier solicitud de este despliegue, llame primero a esta función (functionId), transfiriendo tokenHeader y, si devuelve verdadero, continúa, o bien responda con un mensaje no autorizado HTTP.
- Líneas 9-17: Definición de CORS para gestionar y controlar el uso compartido de recursos de origen cruzado.
- Líneas 18-43: Dos puntos de entrada de URL/VERb a funciones individuales en FaaS.
{
"requestPolicies": {
"authentication": {
"type": "CUSTOM_AUTHENTICATION",
"isAnonymousAccessAllowed": true,
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx",
"tokenHeader": "Authorization"
}
"cors":{
"allowedOrigins": [<list-of-origins>],
"allowedMethods": [<list-of-methods>],
"allowedHeaders": [<list-of-implicit-headers>],
"exposedHeaders": [<list-of-exposed-headers>],
"isAllowCredentialsEnabled": <true|false>,
"maxAgeInSeconds": <seconds>
}
},
"routes": [
{
"path": "/opportunities",
"methods": [
"GET"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
},
{
"path": "/opportunities/{optyid}",
"methods": [
"PATCH"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
}
]
}
</seconds></true|false></list-of-exposed-headers></list-of-implicit-headers></list-of-methods></list-of-origins>