OneSpan Sign Developer: Integración con Oracle PL / SQL - Parte 1

Duo Liang, 14 de Agosto de 2019

OneSpan Sign ofrece servicios web RESTful que pueden integrarse fácilmente con su aplicación, independientemente del lenguaje de programación o la tecnología que esté utilizando. Oracle PL / SQL (Extensiones de lenguaje de procedimiento para SQL), por otro lado, le permite escribir código de manera procesal e interactuar con otros programas a través de API. Invocar directamente las llamadas de API a través de PL / SQL lo ayuda a interactuar con la base de datos de manera más nativa e intuitiva.

En este blog, exploraremos cómo puede aprovechar ambas tecnologías e investigaremos el caso de uso más básico para crear una transacción de OneSpan Sign a través de PL / SQL.

Listas de control de acceso (ACL)

Para comenzar, asegúrese de haber otorgado a su usuario los permisos adecuados para conectarse al servicio OneSpan Sign. Esta información se almacena en sus listas de control de acceso. Estos permisos restringen la capacidad de los hosts remotos para conectarse a la base de datos Oracle. 

En el siguiente ejemplo, primero eliminé la ACL existente y luego creé una nueva mientras le otorgaba a mi usuario el permiso para hacer ping a todos los hosts de la base de datos. Puedes comprobar Documentación oficial de Oracle para especificaciones más detalladas con respecto a las configuraciones de ACL.

empezar
    dbms_network_acl_admin.drop_acl ('www.xml');
	dbms_network_acl_admin.create_acl (
		 acl => 'www.xml',
		 descripción => 'WWW ACL',
		 principal => 'SCOTT',
		 is_grant => verdadero,
		 privilegio => 'conectar'
	 );
	 dbms_network_acl_admin.assign_acl (
		 acl => 'www.xml',
		 host => '*'
	 );
final;
/

La documentación para " ENTORNO URLS Y DIRECCIONES IP "Es una buena referencia para todas las URL de host o direcciones IP de OneSpan Sign que potencialmente incluiría en su lista blanca en su ACL. 

Después de crear una ACL, los registros se almacenan en la tabla "DBA_NETWORK_ACL_PRIVILEGES". Use el siguiente comando para verificar el resultado:

SELECCIONAR * DESDE dba_network_acl_privileges donde principal = 'SCOTT';

Oracle Wallet

Sin más configuración de TLS, verá un "Error de validación de certificado", si intenta hacer ping en el sitio OneSpan, como se muestra a continuación:8-14-1

La solución aquí es descargar el certificado de su recurso de destino, agregar este certificado de confianza en una billetera y asignar la billetera específica a su componente HTL_HTTP. Esto permitirá que su base de datos sepa en qué recurso confiar al conectar una URL con SSL / TLS. Puede descargar el certificado del sitio o el certificado de su Autoridad de certificación (CA).

Tome el sitio de OneSpan Sign, por ejemplo, el certificado OSS es emitido por “GlobalSign Root CA –R1” que puede descargar desde su navegador siguiendo los siguientes pasos:
- Dirígete a tu portal web
- Haz clic en el ícono de candado al lado de la barra de direcciones
- Haga clic en el certificado del sitio
- Encuentre el certificado de CA en el nodo raíz y en la pestaña Ruta de certificación. 
- Exporte el certificado en formato ".crt" o ".cer".8-14-2

El siguiente paso es crear una billetera y agregar el certificado descargado. Puede lograr esto a través de dos métodos. El primero es a través de Oracle Wallet Manager como a continuación:

8-14-3

Alternativamente, puede pasar por la consola del sistema utilizando los siguientes comandos:

orapki wallet create -wallet C: \ ... \ wallet -pwd WalletPasswd123 -auto_login
orapki wallet add -wallet C: \ ... \ wallet -trusted_cert -cert "C: \ ... \ ossroot.cer" -pwd WalletPasswd123

Donde registramos la certificación raíz de OneSpan Sign en la billetera. Asegúrese de tener los permisos de "lectura" en la carpeta de la billetera. Encontré que la forma más fácil de evitar el error de "falla al abrir el archivo" debido a la falta de permisos es copiar la carpeta a otra ubicación para que cualquiera de los usuarios del sistema pueda acceder a la nueva carpeta.

Para consultar todas las certificaciones disparadas en una billetera, use la siguiente línea de comando:

orapki wallet display -wallet C: \ ... \ wallet

Ahora, hagamos ping al sitio OneSpan Sign nuevamente:

declarar
    req utl_http.req;
empezar
    UTL_HTTP.set_wallet ('archivo: C: \ ... \ wallet', NULL);
    req: = utl_http.begin_request ('https://sandbox.esignlive.com');
final;
/

Nota :
- "archivo:" debe incluirse en la ruta de la billetera
- Debido a que configuro "-auto_login" al crear la billetera, solo necesito poner "NULL" como credencial de billetera

Si ve el mensaje "Procedimiento PL / SQL completado con éxito", que se muestra en la consola, significa que puede comunicarse con éxito con el sitio OneSpan Sign.8-14-4

Crear transacción a través de UTL_HTTP

Una vez que se cumplan todos los requisitos previos, ¡estará listo para codificar! En esta sección, le mostraremos cómo usar el componente UTL_HTTP para enviar una solicitud POST con carga JSON. Vea abajo:

crear o reemplazar procedimiento create_package
como
  req utl_http.req;
  res utl_http.resp;
  url varchar2 (4000): = 'https://sandbox.esignlive.com/api/packages';
  tampón varchar2 (4000); 
  contenido varchar2 (4000): = '{"name": "paquete creado a partir de Oracle"}';
 
empezar
  req: = utl_http.begin_request (url, 'POST', 'HTTP / 1.1');
  utl_http.set_header (req, 'content-type', 'application / json'); 
  utl_http.set_header (req, 'Autorización', 'Básico {your_api_key}'); 
  utl_http.set_header (req, 'Content-Length', length (content));
 
  utl_http.write_text (req, contenido);
  res: = utl_http.get_response (req);
  - procesar la respuesta de la llamada HTTP
  empezar
    lazo
      utl_http.read_line (res, buffer);
      dbms_output.put_line (buffer);
    bucle final
    utl_http.end_response (res);
  excepción
    cuando utl_http.end_of_body 
    entonces
      utl_http.end_response (res);
  final;
fin create_package;
/

En el procedimiento para "crear_paquete", se invocó una POST HTTP llamada (/ api / packages) para crear una transacción mínima utilizando solo el nombre del destinatario. Ejecute el script a continuación y verá que se le devuelve el ID del paquete si el procedimiento se ejecutó correctamente:

CONFIGURAR LA SALIDA DEL SERVIDOR
EXEC create_package ();

8-14-5

Mirando hacia el futuro para futuras entregas de la serie

En este artículo, nos hemos conectado con éxito al servidor OneSpan Sign a través de Oracle PL / SQL e invocamos una llamada a la API para crear una transacción básica. Los próximos artículos de esta serie de blogs proporcionarán más ejemplos de código para abordar los casos de uso más populares. 

Si tiene alguna pregunta sobre este blog o cualquier otra cosa relacionada con la integración de OneSpan Sign en su aplicación, visite el Foros de la comunidad de desarrolladores . ¡Sus comentarios nos importan!

Comunidad de desarrolladores de OneSpan Sign

Comunidad de desarrolladores de OneSpan Sign

¡Únase a la comunidad de desarrolladores de OneSpan Sign! Foros, blogs, documentación, descargas de SDK y más.

Únete hoy