OneSpan Sign Developer: Integration in Oracle PL / SQL - Teil 1

Duo Liang, 14. August 2019

OneSpan Sign bietet RESTful-Webdienste, die unabhängig von der verwendeten Programmiersprache oder -technologie problemlos in Ihre Anwendung integriert werden können. Mit Oracle PL / SQL (Prozedurale Spracherweiterungen für SQL) können Sie dagegen Code prozedural schreiben und über APIs mit anderen Programmen interagieren. Durch das direkte Aufrufen von API-Aufrufen über PL / SQL können Sie nativer und intuitiver mit der Datenbank interagieren.

In diesem Blog werden wir untersuchen, wie Sie beide Technologien nutzen und den grundlegendsten Anwendungsfall untersuchen können, um eine OneSpan Sign-Transaktion über PL / SQL zu erstellen.

Zugriffssteuerungslisten (ACL)

Stellen Sie zunächst sicher, dass Sie Ihrem Benutzer die entsprechenden Berechtigungen zum Herstellen einer Verbindung zum OneSpan Sign-Dienst erteilt haben. Diese Informationen werden in Ihren Zugriffssteuerungslisten gespeichert. Diese Berechtigungen schränken die Fähigkeit der Remote-Hosts ein, eine Verbindung zur Oracle-Datenbank herzustellen. 

Im folgenden Beispiel habe ich zuerst die vorhandene ACL gelöscht und dann eine neue erstellt, während ich meinem Benutzer die Berechtigung erteilt habe, alle Hosts aus der Datenbank zu pingen. Du kannst nachschauen Offizielle Dokumentation von Oracle Für detailliertere Spezifikationen bezüglich ACL-Konfigurationen.

Start
    dbms_network_acl_admin.drop_acl ('www.xml');
	dbms_network_acl_admin.create_acl (
		 acl => 'www.xml',
		 description => 'WWW ACL',
		 Prinzipal => 'SCOTT',
		 is_grant => true,
		 Privileg => 'verbinden'
	 );
	 dbms_network_acl_admin.assign_acl (
		 acl => 'www.xml',
		 host => '*'
	 );
Ende;
/

Die Dokumentation zu „ UMWELT-URLS & IP-ADRESSEN ”Ist eine gute Referenz für alle Host-URLs oder IP-Adressen von OneSpan Sign, die Sie möglicherweise in Ihrer ACL auf die Whitelist setzen würden. 

Nach dem Erstellen einer ACL werden die Datensätze in der Tabelle "DBA_NETWORK_ACL_PRIVILEGES" gespeichert. Verwenden Sie den folgenden Befehl, um das Ergebnis zu überprüfen:

SELECT * FROM dba_network_acl_privileges wobei Principal = 'SCOTT';

Oracle Wallet

Ohne weitere TLS-Konfiguration wird ein "Zertifikatüberprüfungsfehler" angezeigt, wenn Sie versuchen, die OneSpan-Site wie unten gezeigt zu pingen:8-14-1

Die Lösung besteht darin, das Zertifikat Ihrer Zielressource herunterzuladen, dieses vertrauenswürdige Zertifikat in eine Brieftasche einzufügen und die spezifische Brieftasche Ihrer HTL_HTTP-Komponente zuzuweisen. Auf diese Weise kann Ihre Datenbank erkennen, welcher Ressource beim Verbinden einer URL mit SSL / TLS vertraut werden soll. Sie können entweder das Zertifikat der Site oder das Zertifikat der Zertifizierungsstelle (CA) herunterladen.

Nehmen wir zum Beispiel die OneSpan Sign-Site. Das OSS-Zertifikat wird von „GlobalSign Root CA –R1“ ausgestellt, das Sie wie folgt aus Ihrem Browser herunterladen können:
- Gehen Sie zu Ihrem Webportal
- Klicken Sie auf das Schlosssymbol neben der Adressleiste
- Klicken Sie auf das Zertifikat der Site
- Suchen Sie das CA-Zertifikat am Stammknoten und auf der Registerkarte Zertifizierungspfad. 
- Exportieren Sie das Zertifikat entweder im Format ".crt" oder ".cer".8-14-2

Der nächste Schritt besteht darin, eine Brieftasche zu erstellen und das heruntergeladene Zertifikat hinzuzufügen. Sie können dies durch zwei Methoden erreichen. Der erste ist über den Oracle Wallet Manager wie folgt:

8-14-3

Alternativ können Sie die Systemkonsole mit den folgenden Befehlen durchlaufen:

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

Wo wir die OneSpan Sign-Root-Zertifizierung für die Brieftasche registriert haben. Stellen Sie sicher, dass Sie über die Leseberechtigungen für den Brieftaschenordner verfügen. Ich habe festgestellt, dass der einfachste Weg, um den Fehler "Fehler beim Öffnen der Datei" aufgrund fehlender Berechtigungen zu vermeiden, darin besteht, den Ordner an einen anderen Speicherort zu kopieren, damit jeder Benutzer des Systems auf den neuen Ordner zugreifen kann.

Verwenden Sie die folgende Befehlszeile, um alle in einer Brieftasche abgefeuerten Zertifizierungen abzufragen:

Orapki Brieftasche Display-Brieftasche C: \ ... \ Brieftasche

Pingen wir jetzt noch einmal die OneSpan Sign-Site an:

erklären
    req utl_http.req;
Start
    UTL_HTTP.set_wallet ('Datei: C: \ ... \ wallet', NULL);
    req: = utl_http.begin_request ('https://sandbox.esignlive.com');
Ende;
/

Hinweis :
- "file:" sollte im Brieftaschenpfad enthalten sein
- Da ich beim Erstellen der Brieftasche "-auto_login" festgelegt habe, muss ich nur "NULL" als Brieftaschen-Berechtigungsnachweis eingeben

Wenn in der Konsole die Meldung "PL / SQL-Prozedur erfolgreich abgeschlossen" angezeigt wird, bedeutet dies, dass Sie die OneSpan Sign-Site erfolgreich erreichen können.8-14-4

Erstellen Sie eine Transaktion über UTL_HTTP

Nachdem alle Voraussetzungen erfüllt sind, können Sie codieren! In diesem Abschnitt zeigen wir Ihnen, wie Sie mit der UTL_HTTP-Komponente eine POST-Anforderung mit JSON-Nutzdaten senden. Siehe unten:

Prozedur create_package erstellen oder ersetzen
wie
  req utl_http.req;
  res utl_http.resp;
  URL varchar2 (4000): = 'https://sandbox.esignlive.com/api/packages';
  Puffer varchar2 (4000); 
  content varchar2 (4000): = '{"name": "Paket aus Orakel erstellt"}';
 
Start
  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', Länge (Inhalt));
 
  utl_http.write_text (req, content);
  res: = utl_http.get_response (req);
  - Verarbeiten Sie die Antwort vom HTTP-Aufruf
  Start
    Schleife
      utl_http.read_line (res, buffer);
      dbms_output.put_line (Puffer);
    Endschleife;
    utl_http.end_response (res);
  Ausnahme
    wenn utl_http.end_of_body 
    dann
      utl_http.end_response (res);
  Ende;
end create_package;
/

In der Prozedur zu "create_package" wurde ein HTTP-POST mit dem Namen (/ api / packages) aufgerufen, um eine minimale Transaktion nur mit dem Namen des Empfängers zu erstellen. Führen Sie das folgende Skript aus, und Sie sehen die Paket-ID, die an Sie zurückgegeben wird, wenn die Prozedur erfolgreich ausgeführt wurde:

SERVEROUTPUT EINSTELLEN
EXEC create_package ();

8-14-5

Mit Blick auf zukünftige Raten der Serie

In diesem Artikel haben wir über Oracle PL / SQL erfolgreich eine Verbindung zum OneSpan Sign-Server hergestellt und einen API-Aufruf aufgerufen, um eine grundlegende Transaktion zu erstellen. In den kommenden Artikeln dieser Blog-Reihe finden Sie weitere Codebeispiele für die beliebtesten Anwendungsfälle. 

Wenn Sie Fragen zu diesem Blog oder zu anderen Aspekten der Integration von OneSpan Sign in Ihrer Anwendung haben, besuchen Sie die Entwickler-Community-Foren . Ihr Feedback ist uns wichtig!

OneSpan Sign-Entwickler-Community

OneSpan Sign-Entwickler-Community

Treten Sie der OneSpan Sign Developer Community bei! Foren, Blogs, Dokumentationen, SDK-Downloads und mehr.

Tritt heute bei