Um belo dia, estamos desenvolvendo nosso sistema e nos deparamos com a necessidade de fazer requisições https a partir do código PL/SQL. Daí pensamos: Sem problemas! Sendo bons profissionais, pesquisamos, como manda o figurino, na documentação oficial, mas, ao folhear dezenas de páginas, logo bate a sensação de que ela é demasiado densa para uma tarefa aparentemente tão simples. Sendo realistas com nossos prazos, buscamos aquele bloco de código amigo que deve estar nos esperando perdido em algum lugar da internet. Afinal, não é possível que ninguém nunca tenha feito uma requisição dentro de um bloco PLSQL! A felicidade que sentimos ao encontrá-lo rapidamente é substituída pela decepção de ver os erros explodindo na tela. Sendo assim, entendemos que é hora de tomar uma água e fazer o café porque a tarefa não será tão simples.
Nesse artigo vamos descrever os passos necessários para fazer nossas tão desejadas requisições. São 3 ações principas:
- O usuário que fará a requisição precisa de grant de execução na package utl_http.
- É necessário configurar ACLs.
- Para requisições https, cada url alvo deverá ter seu certificado guardado no servidor de banco de dados em um wallet.
PACKAGE UTL_HTTP
Logue no banco de dados como SYS e conceda ao usuário que fará as requisições grant de execução na package utl_http.
CONFIGURAR ACL
A partir do Oracle 11g, o acesso a serviço de rede se dá por ACL, Listas de Controle de Acesso. Essas listas indicam quais usuários acessam quais recursos de rede. Para isso, utilizamos a package DBMS_NETWORK_ACL_ADMIN. Basicamente, vamos criar uma Lista de Controle de Acesso e atribuir o host, ou os hosts, a essa lista. Execute o comando abaixo como SYS ou SYSTEM.
CRIAR WALLETS
- Obter o certificado da url que desejamos acessar.
- Criar um oracle wallet para armazenar o certificado.
Se não souber como obter o certificado, leia o artigo: OBTER CERTIFICADOS A PARTIR DO NAVEGADOR WEB
Agora que temos nosso certificado, vamos salvá-lo em algum diretório no nosso servidor. Nesse exemplo, em /home/oracle.
Vamos criar um diretório onde adicionaremos nosso
wallet.
Usando o utilitário orapki, vamos criar o wallet propiamente dito.
Vamos adicionar o certificado que baixamos e está em /home/oracle no wallet.
Se quisermos adicionar mais certificados ao nosso wallet,
basta repetir esse útimo passo.
Tudo pronto para fazer nossa requisição https! Mas, antes, um último detalhe. Precisamos acrescentar uma linha ao nosso código.
Por fim, nosso código pronto para a tão esperada requisição https:
UTL_HTTP and SSL (HTTPS) using Oracle Wallets
Fine-Grained Access to Network Services in Oracle Database 11g Release 1
Nenhum comentário:
Postar um comentário