Llamada a servicios web desde Autonomous Database
Describe las opciones para llamar a servicios web desde Autonomous Database.
Hay una serie de opciones para llamar a los servicios web desde Autonomous Database, incluidas las siguientes:
-
Utilice las API de REST
DBMS_CLOUD
: la funciónDBMS_CLOUD.SEND_REQUEST
inicia una solicitud HTTP, obtiene la respuesta y finaliza la respuesta. Esta función proporciona un flujo de trabajo para enviar una solicitud de API de REST en la nube con argumentos y la función devuelve un código de respuesta y una carga útil. Consulte SEND_REQUEST Función y procedimiento para obtener más información. -
Utilice Oracle APEX: puede interactuar con los servicios web de estilo SOAP y RESTful desde APEX en su instancia de Autonomous Database. Consulte Uso de servicios web con Oracle APEX para obtener más información.
-
Utilice
UTL_HTTP
para enviar una solicitud a un sitio público: consulte Ejecución de una solicitud HTTP a un host público para obtener más información. -
Utilice
UTL_HTTP
para enviar una solicitud a un sitio privado: consulte Envío de una solicitud HTTP a un host privado para obtener más información.Cuando la instancia de Autonomous Database está en un punto final privado, puede utilizar una cartera gestionada por el cliente con procedimientos en
UTL_HTTP
,DBMS_LDAP
,UTL_SMTP
oUTL_TCP
. Consulte Realización de llamadas externas mediante una cartera gestionada por el cliente para obtener más información.
Consulte Notas sobre paquetes PL/SQL para Autonomous Database para obtener información sobre las restricciones para UTL_HTTP
en Autonomous Database.
Temas
- Envío de una solicitud HTTP a un host público
Proporciona detalles para utilizarUTL_HTTP
para enviar una solicitud HTTP en un host público. - Envío de una solicitud HTTP a un host privado
Describe los pasos para utilizarUTL_HTTP
para enviar una solicitud HTTP en un host privado. - Envío de una solicitud HTTP a un sitio privado con un proxy
Cuando la instancia de Autonomous Database está en un punto final privado, puede utilizar un proxy para enviar solicitudes HTTP conUTL_HTTP
. - Uso de objetos de credencial para definir la autenticación HTTP
Describe cómo transferir objetos de credencial al procedimientoUTL_HTTP.SET_CREDENTIAL
.
Tema principal: Tareas
Envío de una solicitud HTTP a un host público
Proporciona detalles para utilizar UTL_HTTP
para enviar una solicitud HTTP en un host público.
Por ejemplo, para enviar una solicitud HTTP para un host público www.example.com, cree una lista de control de acceso para el host:
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'www.example.com',
ace => xs$ace_type( privilege_list => xs$name_list('http'),
principal_name => 'ADMIN',
principal_type => xs_acl.ptype_db));
END;
A continuación, envíe la solicitud HTTP:
SELECT UTL_HTTP.REQUEST(url => 'https://www.example.com/') FROM dual;
Si la instancia de Autonomous Database está en un punto final privado y desea que las llamadas
UTL_HTTP
a hosts públicos estén sujetas a las reglas de salida de la VCN del punto final privado, defina la propiedad de base de datos ROUTE_OUTBOUND_CONNECTIONS
en PRIVATE_ENDPOINT
.
Consulte Seguridad mejorada para conexiones de salida con puntos finales privados para obtener más información.
Consulte Notas sobre paquetes PL/SQL para Autonomous Database para obtener información sobre las restricciones para UTL_HTTP
en Autonomous Database.
Tema principal: Llamada a servicios web desde Autonomous Database
Envío de una solicitud HTTP a un host privado
Describe los pasos para utilizar UTL_HTTP
para enviar una solicitud HTTP en un host privado.
Para enviar una solicitud a un host de destino en un punto final privado, se puede acceder al host de destino desde la VCN de Oracle Cloud Infrastructure de la base de datos de origen. Por ejemplo, se puede conectar al host de destino cuando:
-
La base de datos y el host de destino están en la misma VCN de Oracle Cloud Infrastructure.
-
La base de datos de origen y el host de destino están en distintas Oracle Cloud Infrastructure VCN emparejadas.
-
El host de destino es una red local que está conectada a la VCN de Oracle Cloud Infrastructure de la base de datos de origen mediante FastConnect o VPN.
También puede realizar llamadas UTL_HTTP
con una cartera gestionada por el cliente cuando Autonomous Database esté en un punto final privado. Consulte Realización de llamadas externas mediante una cartera gestionada por el cliente para obtener más información.
Para realizar una solicitud UTL_HTTP
a un destino en un punto final privado:
-
Cree una lista de control de acceso para el host.
Por ejemplo:
BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.example.com', ace => xs$ace_type( privilege_list => xs$name_list('http'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db), private_target => TRUE); END; /
Como se muestra en este ejemplo, al crear una lista de control de acceso para el host, especifique el parámetro
private_target
con el valorTRUE
.Nota
Si defineROUTE_OUTBOUND_CONNECTIONS
enPRIVATE_ENDPOINT
, no es necesario definir el parámetroprivate_target
enTRUE
en esta API. Consulte Seguridad mejorada para conexiones de salida con puntos finales privados para obtener más información. -
Envíe la solicitud HTTP:
SELECT UTL_HTTP.REQUEST( url => 'https://www.example.com/', https_host => 'www.example.com') FROM dual;
Consulte Notas sobre paquetes PL/SQL para Autonomous Database para obtener información sobre las restricciones para UTL_HTTP
en Autonomous Database.
Tema principal: Llamada a servicios web desde Autonomous Database
Enviar una solicitud HTTP a un sitio privado con un proxy
Cuando la instancia de Autonomous Database está en un punto final privado, puede utilizar un proxy para enviar solicitudes HTTP con UTL_HTTP
.
Cuando la instancia de Autonomous Database está en un punto final privado, para utilizar UTL_HTTP
con un proxy de destino, se debe poder acceder al proxy de destino desde la VCN de Oracle Cloud Infrastructure de la base de datos de origen.
Por ejemplo, se puede conectar mediante un proxy cuando:
-
Tanto la base de datos de origen como el servidor proxy están en la misma VCN de Oracle Cloud Infrastructure.
-
La base de datos de origen y el servidor proxy están en distintas Oracle Cloud Infrastructure VCN emparejadas.
-
El servidor proxy es una red local que está conectada a la VCN de Oracle Cloud Infrastructure de la base de datos origen mediante FastConnect o VPN.
También puede realizar llamadas a UTL_HTTP
mediante una cartera gestionada por el cliente. Consulte Realización de llamadas externas mediante una cartera gestionada por el cliente para obtener más información.
Para utilizar un servidor proxy con UTL_HTTP
:
Notas para definir un servidor proxy con UTL_HTTP.SET_PROXY
:
-
Las solicitudes
DBMS_CLOUD
no respetan el servidor proxy definido conUTL_HTTP.SET_PROXY
. Esto incluyeDBMS_CLOUD.SEND_REQUEST
y todo el acceso de almacenamiento de objetos para las tablas externasDBMS_CLOUD
que defina conDBMS_CLOUD.CREATE_EXTERNAL_TABLE
,DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
oDBMS_CLOUD.CREATE_HYBRID_PART_TABLE
. -
Las solicitudes
APEX_WEB_SERVICE
no respetan el servidor proxy definido conUTL_HTTP.SET_PROXY
.
Consulte Notas sobre paquetes PL/SQL para Autonomous Database para obtener información sobre las restricciones para UTL_HTTP
en Autonomous Database.
Tema principal: Llamada a servicios web desde Autonomous Database
Uso de Objetos de Credencial para Definir la Autenticación HTTP
Describe cómo transferir objetos de credenciales al procedimiento UTL_HTTP.SET_CREDENTIAL
.
El procedimiento UTL_HTTP.SET_CREDENTIAL
define la información de autenticación HTTP en la cabecera de solicitud HTTP. El servidor web necesita esta información para autorizar la solicitud.
El procedimiento UTL_HTTP.SET_CREDENTIAL
permite transferir objetos de credenciales para definir la autenticación HTTP. Los objetos de credenciales son objetos de esquema, por lo que solo los usuarios con privilegios pueden acceder a ellos y permiten configurar privilegios de nivel de esquema para acceder al control de credenciales. La transferencia de objetos de credenciales es una forma adecuada y segura de almacenar y gestionar nombres de usuario, contraseñas y claves que se utilizarán para la autenticación.
El procedimiento UTL_HTTP.SET_CREDENTIAL
es una alternativa segura y conveniente al procedimiento UTL_HTTP.SET_AUTHENTICATION
.
Ejemplo
...
UTL_HTTP.SET_AUTHENTICATION (l_http_request, 'web_app_user', 'xxxxxxxxxxxx');
...
Como se muestra en el ejemplo anterior, al llamar al procedimiento SET_AUTHENTICATION
, debe transferir el nombre de usuario/contraseña en texto no cifrado como parte de los parámetros formales PL/SQL. Es posible que necesite incrustar el nombre de usuario/contraseña en varios scripts cron o de automatización PL/SQL. La transferencia de contraseñas de texto no cifrado es un problema de conformidad que se aborda en el procedimiento UTL_HTTP.SET_CREDENTIAL
.
Consulte Procedimiento SET_AUTHENTICATION y Procedimiento SET_AUTHENTICATION_FROM_WALLET para obtener más información.
Sintaxis de UTL_HTTP.SET_CREDENTIAL
UTL_HTTP.SET_CREDENTIAL (
r IN OUT NOCOPY req,
credential IN VARCHAR2,
scheme IN VARCHAR2 DEFAULT 'Basic',
for_proxy IN BOOLEAN DEFAULT FALSE);
Ejemplo para transferir un objeto de credencial en el procedimiento SET_CREDENTIAL
:
-
Cree un objeto de credencial:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;
Esto crea un objeto de credencial que crea un par de nombre de usuario/contraseña almacenado.
Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.
Consulte Especificación de Credenciales de Trabajo del Planificador para obtener más información.
-
Llamar al procedimiento
UTL_HTTP.SET_CREDENTIAL
:DECLARE l_http_request UTL_HTTP.REQ; BEGIN l_http_request := UTL_HTTP.BEGIN_REQUEST('https://www.example.com/v1/dwcsdev/NAME/dwcs_small_xt1.csv'); UTL_HTTP.SET_CREDENTIAL (l_http_request, 'HTTP_CRED','BASIC'); ... END;
En este ejemplo, primero se crea una solicitud llamando al procedimiento
BEGIN_REQUEST
y se define la información de autenticación HTTP en la cabecera de solicitud HTTP llamando al procedimientoSET_CREDENTIAL
. El servidor web necesita esta información para autorizar la solicitud. El valorl_http_request
es la solicitud HTTP,HTTP_CRED
es el nombre de las credenciales yBASIC
es el esquema de autenticación HTTP.
Consulte UTL_HTTP.
Consulte Notas sobre paquetes PL/SQL para Autonomous Database para obtener información sobre las restricciones para UTL_HTTP
en Autonomous Database.
Tema principal: Llamada a servicios web desde Autonomous Database