Adición de conexión como backend de API Gateway
Descubra cómo definir un backend de conexión de OAuth 2.0 con API Gateway.
Puede utilizar un backend de conexión de OAuth 2.0 para definir una ruta de redireccionamiento de conexión estática para los flujos de autenticación que utilizan OpenID Connect. El backend de conexión se utiliza con una política de fallo de validación de OAuth 2.0 en una política de solicitud de autenticación de token.
Cuando un cliente de API envía una solicitud a una ruta que requiere autenticación y la solicitud no incluye una sesión válida, API Gateway redirige el cliente de API al proveedor de identidad configurado. Por defecto, el URI de redirección se basa en la URL que solicitó originalmente el cliente de API. Sin embargo, para las aplicaciones con muchas rutas, parámetros de ruta o rutas comodín, puede ser difícil o poco práctico registrar todos los posibles URI de redirección con el proveedor de identidad.
Para evitar registrar muchos URI de redirección, puede configurar una ruta de redireccionamiento de inicio de sesión estática, como /auth/callback. A continuación, agregue una ruta con la misma ruta de acceso a la especificación de despliegue de API y configure esa ruta para utilizar un backend de conexión de OAuth 2.0. La URL de devolución de llamada completa, incluido el nombre de host de gateway de API, el prefijo de ruta de despliegue y la ruta de redireccionamiento de conexión estática, también se debe configurar como una URL de redireccionamiento válida en el proveedor de identidad.
Al definir una política de autenticación de token OAuth 2.0, puede especificar opcionalmente una ruta de redireccionamiento de inicio de sesión estática en la política de fallo de validación. La ruta de redireccionamiento de conexión estática identifica la ruta a la que el proveedor de identidad redirige los clientes de API como parte del flujo de autenticación. Consulte Validating Tokens to Add Authentication and Authorization to API Deployments.
Después de que el cliente de API se conecte, el proveedor de identidad redirige el cliente de API a la ruta de redireccionamiento de conexión estática como parte del flujo de autenticación. API Gateway establece una sesión y redirige el cliente de API de nuevo a la ruta que el cliente de API solicitó originalmente.
La ruta que utiliza el backend de conexión de OAuth 2.0 está reservada para redireccionamientos del proveedor de identidad. Los clientes de API no pretenden llamar directamente a la ruta (al llamar a la ruta se produce un error 400 Bad Request).
La ruta debe:
- tiene una ruta que coincide con la ruta de redireccionamiento de inicio de sesión estática configurada en la política de fallos de validación de OAuth 2.0
- Utilizar el backend de conexión de OAuth 2.0
- admitir el método
GET - Utilizar una ruta estática, sin parámetros de ruta ni comodines
Puede agregar un backend de conexión a una especificación de despliegue de API:
- uso de la consola
- edición de un archivo JSON
Uso de la consola para agregar backends de conexión a una especificación de despliegue de API
Para agregar backends de conexión a una especificación de despliegue de API mediante la consola:
-
Cree o actualice un despliegue en la consola, seleccione la opción Crear despliegue 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 del API mediante el despliegue de un despliegue de API y Actualización de un gateway del API.
-
En la página Autenticación, especifique las opciones de autenticación:
- Configure una política de solicitud de autenticación de token y seleccione Punto final de introspección de OAuth 2.0 en la lista Tipo de validación.
- Configure una política de fallo de validación y seleccione OAuth2.0 redireccionar cliente a proveedor de identidad.
- Para Ruta de conexión, especifique una ruta de redireccionamiento de inicio de sesión estática, como
/auth/callback.La ruta de redireccionamiento de conexión estática debe ser relativa al prefijo de ruta de despliegue. Por ejemplo, si el prefijo de la ruta de acceso de despliegue es
/apexy la ruta de acceso de redirección de conexión estática es/auth/callback, la ruta de acceso de devolución de llamada completa es/apex/auth/callback.
Para obtener más información sobre las opciones de autenticación, consulte Adición de autenticación y autorización a despliegues de API y Validación de tokens para agregar autenticación y autorización a despliegues de API.
-
En la página Rutas, cree una nueva ruta y especifique:
-
Ruta: ruta de redireccionamiento de conexión estática especificada en la política de fallos de validación de OAuth 2.0. Tenga en cuenta que la ruta de acceso especificada:
- Es relativa al prefijo de ruta de acceso de despliegue.
- debe estar precedido de una barra inclinada (
/) - puede contener varias barras inclinadas, siempre que no sean adyacentes
- Puede incluir caracteres alfanuméricos en mayúscula y minúscula.
- puede incluir los caracteres especiales
$ - _ . + ! ' ( ) , % ; : @ & = - no deben incluir parámetros de ruta de acceso ni comodines
Tenga en cuenta que las reglas para las rutas de ruta de backend de conexión son diferentes de las reglas para las rutas de ruta de backend de desconexión.
-
Métodos: uno o varios métodos aceptados por el backend. En el caso de los backends de conexión, solo se acepta
GET. -
Agregar un único backend o agregar varios backends: si se enrutan todas las solicitudes al mismo backend o se enrutan a otros backends.
En estas instrucciones se supone que desea utilizar un único backend, por lo que debe seleccionar Agregar un único backend. Como alternativa, si desea utilizar backends diferentes, seleccione Agregar varios backends.
-
Tipo de backend: el tipo de servicio de backend es Conexión.
-
-
Seleccione Crear para crear la ruta.
-
Seleccione Siguiente para revisar los detalles que ha introducido para el despliegue API.
-
Seleccione Crear o Actualizar para crear o actualizar el despliegue de API.
-
Configure el proveedor de identidad para que incluya la URL de devolución de llamada completa como una URL de redirección válida.
La URL de devolución de llamada completa incluye el nombre de host del gateway de API, el prefijo de ruta de despliegue y la ruta de redireccionamiento de conexión estática. Por ejemplo:
https://<gateway-hostname>/<deployment-path-prefix>/auth/callbackTenga en cuenta que si el prefijo de ruta de despliegue es simplemente
/y la ruta de redireccionamiento de conexión estática es/auth/callback, la URL de devolución de llamada completa eshttps://<gateway-hostname>/auth/callback(y nohttps://<gateway-hostname>//auth/callback). -
De manera opcional, confirme que la API Se ha desplegado correctamente llamándola.
Edición de un archivo en formato JSON para agregar backends de conexión a una especificación de despliegue de API
Para agregar backends de conexión a una especificación de despliegue de API en un archivo JSON:
-
Con su editor JSON preferido, edite la especificación que desea agregar un backend de conexión o cree una nueva especificación que desea desplegar de API.
Por ejemplo, la siguiente especificación de despliegue básico de API define una función sencilla de Hello World sin servidor en Oracle Functions como un único backend:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] } -
En la sección
routes, incluya una nueva sección para un backend de conexión:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } }, { "path": "<login-route-path>", "methods": ["<method-list>"], "backend": { "type": "OAUTH2_LOGIN_BACKEND" } } ] }donde:
-
<login-route-path>especifica la ruta de acceso para las redirecciones del proveedor de identidad al backend de conexión. La ruta debe coincidir con la ruta de redireccionamiento de inicio de sesión estática configurada en la política de fallos de validación de OAuth 2.0. Tenga en cuenta que la ruta de acceso especificada:- Es relativa al prefijo de ruta de acceso de despliegue.
- debe estar precedido de una barra inclinada (
/) - puede contener varias barras inclinadas, siempre que no sean adyacentes
- Puede incluir caracteres alfanuméricos en mayúscula y minúscula.
- puede incluir los caracteres especiales
$ - _ . + ! ' ( ) , % ; : @ & = - no deben incluir parámetros de ruta de acceso ni comodines
Tenga en cuenta que las reglas para las rutas de ruta de backend de conexión son diferentes de las reglas para las rutas de ruta de backend de desconexión.
-
<method-list>especifica uno o varios métodos aceptados por el backend de conexión, separados por comas. En el caso de los backends de conexión, solo se aceptaGET. -
"type": "OAUTH2_LOGIN_BACKEND"especifica que el backend es un backend de conexión.
-
-
Guarde el archivo JSON que contiene la especificación del despliegue 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 de despliegue 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 del API mediante el despliegue de un despliegue de API y Actualización de un gateway del API.
-
Configure el proveedor de identidad para que incluya la URL de devolución de llamada completa como una URL de redirección válida.
La URL de devolución de llamada completa incluye el nombre de host del gateway de API, el prefijo de ruta de despliegue y la ruta de redireccionamiento de conexión estática. Por ejemplo:
https://<gateway-hostname>/<deployment-path-prefix>/auth/callbackTenga en cuenta que si el prefijo de ruta de despliegue es simplemente
/y la ruta de redireccionamiento de conexión estática es/auth/callback, la URL de devolución de llamada completa eshttps://<gateway-hostname>/auth/callback(y nohttps://<gateway-hostname>//auth/callback). -
(Opcional) Confirme la API que se ha desplegado correctamente llamándola. Consulte Llamada a una API desplegada en un gateway de API.