Développeur de signes OneSpan : Intégrer avec Oracle PL/SQL - Partie 1

Duo Liang, août 14, 2019

OneSpan Sign fournit des services Web RESTful qui peuvent être facilement intégrés à votre application quel que soit le langage ou la technologie de programmation que vous utilisez. Oracle PL/SQL (Extensions de langage procédural à SQL), d'autre part, vous permet d'écrire du code d'une manière procédurale et d'interagir avec d'autres programmes par le biais d'API. Invoquer directement les appels API via PL/SQL vous aide à interagir avec la base de données de manière plus native et intuitive.

Dans ce blog, nous allons explorer comment vous pouvez tirer parti des deux technologies ainsi que d'enquêter sur le cas d'utilisation le plus fondamental pour créer une transaction OneSpan Sign via PL / SQL.

Listes de contrôle d'accès (ACL)

Pour commencer, assurez-vous d'avoir accordé à votre utilisateur les autorisations appropriées pour vous connecter au service OneSpan Sign. Ces informations sont stockées dans vos listes de contrôle d'accès. Ces autorisations limitent la capacité des hôtes distants à se connecter à la base de données Oracle. 

Dans l'exemple ci-dessous, j'ai d'abord laissé tomber l'ACL existant, puis créé un nouveau tout en accordant à mon utilisateur la permission de ping tous les hôtes de la base de données. Vous pouvez consulter la Documentation Officielle d'Oracle pour des spécifications plus détaillées concernant les configurations ACL.

Commencer
    dbms_network_acl_admin.drop_acl ('www.xml');
	dbms_network_acl_admin.create_acl(
		 acl 'www.xml',
		 description de l'ACL WWW,
		 principal 'SCOTT',
		 is_grant vrai,
		 privilège ' 'connect'
	 );
	 dbms_network_acl_admin.assign_acl(
		 acl 'www.xml',
		 hôte ''
	 );
fin
/

La documentation pour "ENVIRONMENT URLS - IP ADDRESSES" est une bonne référence pour toutes les URL ou adresses IP de OneSpan Sign que vous pourriez potentiellement liste blanche dans votre ACL. 

Après la création d'un ACL, les enregistrements sont stockés à la table « DBA_NETWORK_ACL_PRIVILEGES ». Utilisez la commande ci-dessous pour vérifier le résultat :

SELECT - DE dba_network_acl_privileges où le principal'SCOTT';

Portefeuille Oracle

Sans autre configuration TLS, vous verrez un "échec de validation de certificat", si vous essayez de ping le site OneSpan, comme indiqué ci-dessous:8-14-1

La solution ici est de télécharger le certificat de votre ressource cible, ajouter ce certificat de confiance dans un portefeuille, et assigner le portefeuille spécifique à votre composant HTL_HTTP. Cela permettra à votre base de données de savoir quelle ressource faire confiance lors de la connexion d'une URL avec SSL/TLS. Vous pouvez télécharger le certificat du site ou le certificat de son Autorité de certificat (CA).

Prenez le site OneSpan Sign par exemple, le certificat OSS est délivré par "GlobalSign Root CA -R1" que vous pouvez télécharger à partir de votre navigateur suivant les étapes ci-dessous:
- Dirigez-vous vers votre portail web
- Cliquez sur l'icône de verrouillage à côté de la barre d'adresse
- Cliquez sur le certificat du site
- Trouvez le certificat de CA au nœud racine et à partir de l'onglet Chemin de certification. 
- Exporter le certificat en format ".crt" ou ".cer".8-14-2

L'étape suivante consiste à créer un portefeuille et à ajouter le certificat téléchargé. Vous pouvez y parvenir par deux méthodes. Le premier est par l'intermédiaire de l'Oracle Wallet Manager comme ci-dessous:

8-14-3

Alternativement, vous pouvez passer par la console système en utilisant les commandes ci-dessous:

portefeuille orapki créer -portefeuille C: ' portefeuille -pwd WalletPasswd123 -auto_login
portefeuille orapki ajouter -portefeuille C: ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' trusted_cert ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '

Où nous avons enregistré la certification Racine OneSpan Sign au portefeuille. Assurez-vous d'avoir les autorisations " lire " sur le dossier portefeuille. J'ai trouvé le moyen le plus simple d'éviter l'erreur "échec d'ouvrir le fichier" en raison d'un manque d'autorisations est de copier le dossier à un autre emplacement de sorte que le nouveau dossier est accessible à l'un des utilisateurs du système.

Pour interroger toutes les certifications tirées dans un portefeuille, utilisez ci-dessous la ligne de commande :

affichage de portefeuille orapki -portefeuille C:

Maintenant, nous allons ping le site OneSpan Sign nouveau:

Déclarer
    req utl_http.req;
Commencer
    UTL_HTTP.set_wallet ('fichier:C: '... 'portefeuille', NULL);
    req : utl_http.begin_request ('https://sandbox.esignlive.com');
fin
/

Note:
- "fichier:" doit être inclus dans le chemin du portefeuille
- Parce que j'ai mis "-auto_login" lors de la création du portefeuille, j'ai juste besoin de mettre "NULL" comme un porte-monnaie d'identification

Si vous voyez le message « Procédure PL/SQL complétée avec succès », affiché dans la console, cela signifie que vous pouvez atteindre avec succès le site OneSpan Sign.8-14-4

Créer des transactions par UTL_HTTP

Après que toutes les conditions préalables sont remplies, vous êtes prêt à coder ! Dans cette section, nous vous montrerons comment utiliser UTL_HTTP composant pour envoyer une demande POST avec la charge utile JSON. Voir ci-dessous:

créer ou remplacer la procédure create_package
Comme
  req utl_http.req;
  res utl_http.resp;
  url varchar2(4000) : 'https://sandbox.esignlive.com/api/packages';
  tampon varchar2(4000); 
  contenu varchar2(4000) : '''nom":"paquet créé à partir de oracle'';
 
Commencer
  req : utl_http.begin_request (url, 'POST',' HTTP/1.1');
  utl_http.set_header (req, 'content-type', 'application/json'); 
  utl_http.set_header (req, 'Authorization', 'Basic 'your_api_key'); 
  utl_http.set_header (req, 'Content-Length', longueur (contenu));
 
  utl_http.write_text (req, contenu);
  res : utl_http.get_response (req);
  -- traiter la réponse de l'appel HTTP
  Commencer
    boucle
      utl_http.read_line (res, tampon);
      dbms_output.put_line (tampon);
    boucle d'extrémité;
    utl_http.end_response(res);
  Exception
    quand utl_http.end_of_body 
    Puis
      utl_http.end_response(res);
  fin
fin create_package;
/

Dans la procédure de "create_package", un POST HTTP appelé (/api/packages) a été invoqué pour créer une transaction minimale en utilisant uniquement le nom du destinataire. Exécutez le script ci-dessous, et vous verrez l'ID de paquet retourné à vous si la procédure a été exécutée avec succès :

SET SERVEROUTPUT ON
EXEC create_package();

8-14-5

Perspectives d'avenir de la série

Dans cet article, nous nous sommes connectés avec succès au serveur OneSpan Sign via Oracle PL/SQL et avons invoqué un appel API pour créer une transaction de base. Les articles à venir dans cette série de blog fourniront plus d'échantillons de code pour traiter les cas d'utilisation les plus populaires. 

Si vous avez des questions concernant ce blog ou toute autre chose concernant l'intégration de OneSpan Sign dans votre application, visitez les Forums communautairesdes développeurs . Vos commentaires sont importants pour nous!

OneSpan Sign Developer Community

OneSpan Sign Developer Community

Rejoignez la communauté OneSpan Sign Developer! Forums, blogs, documentation, téléchargements SDK, et plus encore.

Joignez-vous aujourd'hui