OneSpan Sign Developer:Oracle PL / SQLとの統合–パート1

Duo Liang, 2019年8月14日

OneSpan Signは、使用しているプログラミング言語やテクノロジーに関係なく、アプリケーションと簡単に統合できるRESTful Webサービスを提供します。一方、Oracle PL / SQL(SQLの手続き型言語拡張)では、手続き的な方法でコードを記述し、APIを介して他のプログラムと対話できます。PL / SQLを介して直接API呼び出しを呼び出すと、データベースをよりネイティブかつ直感的に操作できます。

このブログでは、両方のテクノロジーを活用する方法を探り、PL / SQLを介してOneSpan Signトランザクションを作成するための最も基本的な使用例を調査します。

アクセス制御リスト(ACL)

まず、OneSpan Signサービスに接続するための適切な権限をユーザーに付与していることを確認してください。この情報はアクセス制御リストに保存されます。これらの権限は、リモートホストがOracleデータベースに接続する機能を制限します。 

以下の例では、まず既存のACLを削除してから、新しいACLを作成し、データベースからすべてのホストにpingする権限をユーザーに付与しています。確認してもいいオラクルの公式ドキュメント ACL構成に関するより詳細な仕様については、

ベギン
    dbms_network_acl_admin.drop_acl( 'www.xml');
	dbms_network_acl_admin.create_acl(
		 acl => 'www.xml'、
		 説明=> 'WWW ACL'、
		 プリンシパル=> 'SCOTT'、
		 is_grant => true、
		 特権=> '接続'
	 );
	 dbms_network_acl_admin.assign_acl(
		 acl => 'www.xml'、
		 ホスト=> '*'
	 );
終わり;
/

環境URLとIPアドレス 」は、ACLでホワイトリストに登録する可能性があるOneSpan SignのすべてのホストURLまたはIPアドレスの適切なリファレンスです。 

ACLを作成した後、レコードは「DBA_NETWORK_ACL_PRIVILEGES」テーブルに格納されます。以下のコマンドを使用して、結果を再確認します。

SELECT * FROM dba_network_acl_privileges where principal = 'SCOTT';

Oracleウォレット

さらにTLS構成を行わないと、次に示すようにOneSpanサイトにpingを実行しようとすると、「証明書の検証エラー」が表示されます。8-14-1

ここでの解決策は、ターゲットリソースの証明書をダウンロードし、この信頼できる証明書をウォレットに追加して、特定のウォレットをHTL_HTTPコンポーネントに割り当てることです。これにより、SSL / TLSでURLを接続するときに、データベースが信頼するリソースを認識できるようになります。サイトの証明書またはその認証局(CA)の証明書をダウンロードできます。

OneSpan Signサイトを例にとると、OSS証明書は「GlobalSign Root CA –R1」によって発行され、以下の手順に従ってブラウザーからダウンロードできます。
-Webポータルにアクセスする
-アドレスバーの横にある鍵のアイコンをクリックします
-サイトの証明書をクリックします
-ルートノードで、[証明のパス]タブからCAの証明書を見つけます。 
-証明書を「.crt」または「.cer」形式でエクスポートします。8-14-2

次のステップは、ウォレットを作成し、ダウンロードした証明書を追加することです。これは2つの方法で実現できます。1つ目は、次のようなOracle Wallet Managerを使用する方法です。

8-14-3

または、以下のコマンドを使用してシステムコンソールを移動することもできます。

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

OneSpan Signルート証明書をウォレットに登録した場所。ウォレットフォルダーに対する「読み取り」権限があることを確認してください。アクセス許可の不足による「ファイルを開けません」エラーを回避する最も簡単な方法は、フォルダーを別の場所にコピーして、システムのユーザーが新しいフォルダーにアクセスできるようにすることです。

ウォレットで発行されたすべての証明書を照会するには、以下のコマンドラインを使用します。

orapkiウォレット表示-ウォレットC:\ ... \ wallet

次に、OneSpan Signサイトに再度pingします。

宣言する
    req utl_http.req;
ベギン
    UTL_HTTP.set_wallet( 'ファイル:C:\ ... \ wallet'、NULL);
    req:= utl_http.begin_request( 'https://sandbox.esignlive.com');
終わり;
/

注意
-「file:」はウォレットパスに含める必要があります
-ウォレットの作成時に「-auto_login」を設定したため、ウォレット資格情報として「NULL」を入力するだけです

コンソールに「PL / SQLプロシージャが正常に完了しました」というメッセージが表示された場合は、OneSpan Signサイトに正常にアクセスできることを意味します。8-14-4

UTL_HTTPによるトランザクションの作成

すべての前提条件が満たされると、コーディングの準備が整います。このセクションでは、UTL_HTTPコンポーネントを使用して、JSONペイロードを含むPOSTリクエストを送信する方法を紹介します。下記参照:

プロシージャcreate_packageの作成または置換
なので
  req utl_http.req;
  res utl_http.resp;
  url varchar2(4000):= 'https://sandbox.esignlive.com/api/packages';
  バッファvarchar2(4000); 
  content varchar2(4000):= '{"name": "oracleから作成されたパッケージ"}';
 
ベギン
  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'、length(content));
 
  utl_http.write_text(req、content);
  res:= utl_http.get_response(req);
  -HTTP呼び出しからの応答を処理します
  ベギン
    ループ
      utl_http.read_line(res、buffer);
      dbms_output.put_line(buffer);
    ループ終了;
    utl_http.end_response(res);
  例外
    utl_http.end_of_body 
    その後
      utl_http.end_response(res);
  終わり;
create_packageを終了します。
/

「create_package」の手順では、(/ api / packages)というHTTP POSTが呼び出され、受信者の名前のみを使用して最小限のトランザクションが作成されました。以下のスクリプトを実行すると、プロシージャが正常に実行された場合に返されるパッケージIDが表示されます。

サーバー出力をオンに設定
EXEC create_package();

8-14-5

シリーズの今後の分割払いに向けて

この記事では、Oracle PL / SQLを介してOneSpan Signサーバーに正常に接続し、API呼び出しを呼び出して基本的なトランザクションを作成しました。このブログシリーズの今後の記事では、最も一般的な使用例に対処するためのコードサンプルをさらに提供します。 

このブログや、OneSpan Signをアプリケーションに統合することに関するその他の質問がある場合は、開発者コミュニティフォーラム 。あなたのフィードバックは私たちにとって重要です!

OneSpan Sign開発者コミュニティ

OneSpan Sign開発者コミュニティ

OneSpan Sign開発者コミュニティに参加してください!フォーラム、ブログ、ドキュメント、SDKダウンロードなど。

今日参加します