Desenvolvedor de sinal OneSpan: Integre-se ao Oracle PL / SQL - Parte 1

Duo Liang, 14 de Agosto de 2019

O OneSpan Sign fornece serviços da Web RESTful que podem ser facilmente integrados ao seu aplicativo, independentemente da linguagem ou tecnologia de programação que você está usando. O Oracle PL / SQL (extensões de linguagem processual para SQL), por outro lado, permite escrever código de maneira processual e interagir com outros programas por meio de APIs. A chamada direta de chamadas de API por meio do PL / SQL ajuda a interagir com o banco de dados de maneira mais nativa e intuitiva.

Neste blog, exploraremos como você pode aproveitar as duas tecnologias, bem como investigar o caso de uso mais básico para criar uma transação de sinal OneSpan por meio do PL / SQL.

Listas de controle de acesso (ACL)

Para começar, verifique se você concedeu ao usuário as permissões apropriadas para se conectar ao serviço de sinal OneSpan. Esta informação é armazenada nas suas listas de controle de acesso. Essas permissões restringem a capacidade dos hosts remotos de se conectar ao banco de dados Oracle. 

No exemplo abaixo, removi primeiro a ACL existente e criei uma nova, concedendo ao meu usuário a permissão para executar ping em todos os hosts do banco de dados. Você pode checar Documentação Oficial da Oracle para especificações mais detalhadas sobre configurações de ACL.

início
    dbms_network_acl_admin.drop_acl ('www.xml');
	dbms_network_acl_admin.create_acl (
		 acl => 'www.xml',
		 description => 'WWW ACL',
		 principal => 'SCOTT',
		 is_grant => true,
		 privilégio => 'conectar'
	 );
	 dbms_network_acl_admin.assign_acl (
		 acl => 'www.xml',
		 host => '*'
	 );
fim;
/

A documentação para " URLS AMBIENTAIS E ENDEREÇOS IP ”É uma boa referência para todos os URLs de host ou endereços IP do OneSpan Sign que você potencialmente colocaria na lista de permissões na sua ACL. 

Depois de criar uma ACL, os registros são armazenados na tabela "DBA_NETWORK_ACL_PRIVILEGES". Use o comando abaixo para verificar novamente o resultado:

SELECT * FROM dba_network_acl_privileges em que principal = 'SCOTT';

Carteira Oracle

Sem uma configuração TLS adicional, você verá uma "Falha na validação do certificado", se tentar executar ping no site do OneSpan, conforme mostrado abaixo:8-14-1

A solução aqui é fazer o download do certificado do seu recurso de destino, adicionar esse certificado confiável a uma carteira e atribuir a carteira específica ao seu componente HTL_HTTP. Isso permitirá que seu banco de dados saiba em qual recurso confiar ao conectar um URL com SSL / TLS. Você pode baixar o certificado do site ou o certificado de sua Autoridade de Certificação (CA).

Pegue o site do OneSpan Sign, por exemplo, o certificado OSS é emitido pela “GlobalSign Root CA –R1”, que você pode baixar do navegador seguindo as etapas abaixo:
- Acesse seu portal da web
- Clique no ícone de cadeado ao lado da barra de endereço
- Clique no certificado do site
- Encontre o certificado da CA no nó raiz e na guia Caminho da certificação. 
- Exporte o certificado no formato “.crt” ou “.cer”.8-14-2

O próximo passo é criar uma carteira e adicionar o certificado baixado. Você pode conseguir isso através de dois métodos. A primeira é através do Oracle Wallet Manager, como abaixo:

8-14-3

Como alternativa, você pode acessar o console do sistema usando os comandos abaixo:

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

Onde registramos a certificação raiz do OneSpan Sign na carteira. Verifique se você tem as permissões de "leitura" na pasta da carteira. Eu encontrei a maneira mais fácil de evitar o erro "falha ao abrir arquivo" devido à falta de permissões é copiar a pasta para outro local para que a nova pasta fique acessível para qualquer usuário do sistema.

Para consultar todas as certificações disparadas em uma carteira, use a linha de comando abaixo:

exibição carteira orapki-carteira C: \ ... \ carteira

Agora, vamos executar ping no site do OneSpan Sign novamente:

declarar
    req utl_http.req;
início
    UTL_HTTP.set_wallet ('arquivo: C: \ ... \ wallet', NULL);
    req: = utl_http.begin_request ('https://sandbox.esignlive.com');
fim;
/

Nota :
- "arquivo:" deve ser incluído no caminho da carteira
- Como eu defini "-auto_login" ao criar a carteira, só preciso colocar "NULL" como uma credencial de carteira

Se você vir a mensagem “Procedimento PL / SQL concluído com êxito”, exibida no console, significa que você pode acessar com êxito o site do OneSpan Sign.8-14-4

Criar transação por meio de UTL_HTTP

Depois que todos os pré-requisitos forem atendidos, você estará pronto para codificar! Nesta seção, mostraremos como usar o componente UTL_HTTP para enviar uma solicitação POST com carga útil JSON. Ver abaixo:

criar ou substituir o procedimento create_package
Como
  req utl_http.req;
  res utl_http.resp;
  url varchar2 (4000): = 'https://sandbox.esignlive.com/api/packages';
  buffer varchar2 (4000); 
  content varchar2 (4000): = '{"name": "pacote criado a partir do oracle"}';
 
início
  req: = utl_http.begin_request (url, 'POST', 'HTTP / 1.1');
  utl_http.set_header (req, 'tipo de conteúdo', 'application / json'); 
  utl_http.set_header (req, 'Autorização', 'Básico {sua_api_key}'); 
  utl_http.set_header (req, 'Comprimento do conteúdo', comprimento (conteúdo));
 
  utl_http.write_text (req, conteúdo);
  res: = utl_http.get_response (req);
  - processar a resposta da chamada HTTP
  início
    ciclo
      utl_http.read_line (res, buffer);
      dbms_output.put_line (buffer);
    loop final;
    utl_http.end_response (res);
  exceção
    quando utl_http.end_of_body 
    então
      utl_http.end_response (res);
  fim;
final create_package;
/

No procedimento para "create_package", um HTTP POST chamado (/ api / packages) foi chamado para criar uma transação mínima usando apenas o nome do destinatário. Execute o script abaixo e você verá o ID do pacote retornado se o procedimento foi executado com êxito:

SET SERVEROUTPUT ON
EXEC create_package ();

8-14-5

Prevendo futuras parcelas da série

Neste artigo, conectamos com sucesso ao servidor OneSpan Sign através do Oracle PL / SQL e invocamos uma chamada de API para criar uma transação básica. Os próximos artigos desta série de blogs fornecerão mais exemplos de código para tratar dos casos de uso mais populares. 

Se você tiver alguma dúvida sobre este blog ou qualquer outra coisa relacionada à integração do OneSpan Sign ao seu aplicativo, visite o Fóruns da comunidade de desenvolvedores . Seu feedback é importante para nós!

Comunidade de desenvolvedores OneSpan Sign

Comunidade de desenvolvedores OneSpan Sign

Participe da comunidade de desenvolvedores do OneSpan Sign! Fóruns, blogs, documentação, downloads de SDK e muito mais.

Junte-se hoje