Histórico de Revisões

Documentos relacionados
Histórico de Revisões

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

1 handshake 2 consulta 3 alterausuario

Curso de PHP. FATEC - Jundiaí TIPOS DE VARIÁVEIS

Cartórios de Registro de Imóveis

Consulta de endereço através do Cep

Linguagem de Programação III - PHP

JAVA. Professor: Bruno Toledo

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Palavras Reservadas da Linguagem Java

Tutorial. Começando a Criar Aplicativos SMS

Manual de Integração DOCUMENTAÇÃO TÉCNICA. Especificação para integração via API, Webservices e SMPP.

Coletando dados utilizando a API do Zabbix com PHP e JSON

Desenvolvimento de Sistemas para WEB Site:

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

PREFEITURA DO MUNICÍPIO DE OSASCO MANUAL PARA EMISSÃO DE NFS-E EM TEMPO REAL VIA WEBSERVICE

Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

A sintaxe básica para definir uma função é: function nome_da_função([arg1, arg2, arg3]) { Comandos;... ; [return <valor de retorno>]; }

Login. Criar um novo website File > New > WebSite Framework 4.5 Visual C# ASP.NET Empty Web Site Nome do projeto: WebLogin

Tutorial C# - Delegates e Eventos...

4. Constantes. Constantes pré-definidas

Desenvolvimento Web II

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

Algoritmos II prof. Daniel Oliveira

Configurando e-cpf no Portal Web do SARA - Versão Protheus

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Construção de Sites 2. Prof. Christiano Lima Santos

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Aula07 Forms Authentication

Login. Criar uma pasta Repositories na raiz do projeto. Criar uma classe Funcoes.cs dentro da pasta Repositories.

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV1-01. Luiz Leão

Assina Web S_Line Manual de Uso

Validação de dados no PHP

Módulo 9 VARIÁVEIS, TIPOS DE DADOS, OPERADORES, ESTRUTURAS DE CONTROLO P S I C P T G P S I

API PAGAMENTOS. Todas requisições devem ser feitas para o endpoint

SISTEMAS DE LOG, TRATAMENTO DE ATAQUES E ERROS PROF.: PAULO RICARDO LISBOA DE ALMEIDA

Instrumentação do NEON via WebSocket Especificação dos serviços de instrumentação do NEON através de conexões WebSocket.

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Linguagem de Programação III

PREFEITURA DO MUNICÍPIO DE OSASCO MANUAL PARA EMISSÃO DE NFS-E EM TEMPO REAL VIA WEBSERVICE

Layout de integração com webservices de clientes. Resultado de exames

Manual de Integração do icarta

Curitiba DOCUMENTAÇÃO WebService PGSMS e PG Versão 1.0

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Linguagem de Programação III

Programação Orientada a Objetos

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

JavaScript (Elementos de Programação e Programação Básica)

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Google Chart. Adicionando Action No PublicoController, adicionar o trecho. Adicionar View Botão direito na Action acima, Add View.

2017/07/25 19:38 1/10 DocFix

PRDS C#.Net Alexandre L. Silva

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Aplicação de cadastros JavaScript

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Linguagem de Programação II Implementação

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica

Manual de Integração Cartórios

Apostila - Desenvolvimento web com PHP

Manual de Instalação NF-e Captura Express

Aula 04 Manipulação e Tipos de Dados em PHP. Prof. Pedro Baesse

Linguagem Técnica de Programação III Introdução a PHP

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Introdução ao Javascript

Transcrição:

1

Histórico de Revisões Data Versão Responsável Histórico 22/11/2016 1.0 Robson M. Matos Elaboração da documentação técnica 21/06/2018 1.1 Robson M. Matos Inclusão do método consulta, removido método pesquisa. Histórico de Revisões 2 1. Definição e Escopo 4 2. Requisitos de Segurança 5 3. Métodos 6 3.1. Descrição geral dos métodos 6 3.2. Descrição explicativa dos métodos 6 3.3. Descrição geral dos parâmetros dos métodos 7 3.3.1. pauth 7 3.3.2. pconsulta 7 3.4. Descrição explicativa dos valores de saídas dos métodos 8 3.4.1. Retorno Padrão 8 3.4.2. retornoconnect 8 3.4.3. retornochallenge 8 3.4.4. retornoconsulta 8 4. Definição de Regras e Serviços (em PHP) 9 4.1. Considerações 9 4.2. URL do Sistema e do WebService - Produção e Testes 9 4.3. Instanciando o WebService 9 4.4. Método: challenge_generator 10 2

4.5. Chamando o script de autenticação 10 4.6. Método: auth - processo de autenticação 10 4.7. Método: consulta 11 5. Definição de Regras e Serviços (em C#) 12 5.1. Instanciando o WebService 12 5.2. Método: challenge_generator 13 5.3. Método: auth 13 5.4. Método: consulta 14 3

1. Definição e Escopo O presente documento visa especificar a implementação do WebService da Central Nacional de Indisponibilidade de Bens, bem como seu funcionamento. Este documento trará exemplos em PHP e C#. 4

2. Requisitos de Segurança O modelo de segurança consiste na autenticação via certificado digital, com o WebService gerando um desafio e, com este desafio mais os dados de autenticação do usuário, a extensão do navegador gera uma assinatura e um certificado, que são enviados novamente pelo WebService, juntamente com o token de acesso do Registrador de Imóveis, para autenticação do usuário. 5

3. Métodos Aqui veremos todos os métodos do WebService e suas descrições. Os parâmetros dos métodos são objetos com propriedades descritas em Descrição geral dos parâmetros dos métodos. 3.1. Descrição geral dos métodos auth (pauth AS auth) AS retornoconnect challenge_generator () AS retornochallenge consulta (pconsulta AS consulta) AS retornoconsulta 3.2. Descrição explicativa dos métodos auth: Objetivo: Autenticar o usuário no sistema utilizando certificado digital; challenge_generator: Gerar um desafio para utilizar na autenticação; consulta: Consulta se determinado documento (CPF ou CNPJ) possui indisponibilidade. 6

3.3. Descrição geral dos parâmetros dos métodos 3.3.1. pauth challenge: String Desafio gerado pelo WebService para autenticação; signature: String Assinatura do challenge gerada pelo Java Applet após escolha do certificado; certificate: String Certificado digital do usuário; token: String Token de acesso único para o Registrador de Imóveis que deverá ser utilizado na autenticação. 3.3.2. pconsulta session_id: String ID de sessão entregue pelo WebService após a autenticação; documento: String CPF ou CNPJ desejado. 7

3.4. Descrição explicativa dos valores de saídas dos métodos 3.4.1. Retorno Padrão Todas as requisições retornam um objeto "retorno" com duas propriedades, a propriedade "info" retorna uma propriedade denominada faultmessage, do tipo String, que poderá vir em branco. retorno.success = Boolean; // sucesso ou não da requisição retorno.info = Object; // dados da resposta retorno.info.faultmessage = String; // mensagem de erro Daqui para frente trataremos apenas o objeto propriedade info. 3.4.2. retornoconnect info.session_id = String; // id de sessão que será utilizado em todo o sistema. 3.4.3. retornochallenge info.challenge = String; // desafio que será gerado na autenticação. 3.4.4. retornoconsulta info.documento = Object; // Objeto de retorno do documento consultado info.documento.documento = String; // documento consultado (CPF, CNPJ) info.documento.nrprotocolos = Integer; // quantidade de ordens que está indisponível info.documento.mensagem = String; // Mensagem de retorno sobre o documento info.hash = String; // Hash da consulta contendo 40 caracteres hexadecimais 8

4. Definição de Regras e Serviços (em PHP) 4.1. Considerações 1. Todo método retorna um objeto nomeado retorno com os dados da requisição; 2. O objeto retorno possui a propriedade success, no formato booleano, que informa se a requisição ao método obteve sucesso, ou não; 3. O objeto retorno possui um sub-objeto nomeado info onde tem as propriedades com os dados solicitados, como a propriedade session_id, para o método auth ; 4. O sub-objeto info do retorno de todos os métodos possui uma propriedade chamada faultmessage, do tipo String, que será preenchida com a mensagem de erro caso a propriedade success do objeto retorno seja false. 4.2. URL do Sistema e do WebService - Produção e Testes Central Nacional de Indisponibilidade de Bens Produção: https://www.indisponibilidade.org.br/ Testes: https://homolog.indisponibilidade.org.br/ A URL abaixo deverá ser usada para conexão com o WebService. Produção: http://www.indisponibilidade.org.br/wsdl/tabeliao/ Testes: http://homolog.indisponibilidade.org.br/wsdl/tabeliao/ Daqui para frente, nos referiremos a ela por $url. 4.3. Instanciando o WebService Aqui você vai ver como deve ser instanciado o WebService <?php $serv = new SoapClient("$url");?> 9

4.4. Método: challenge_generator Aqui veremos como gerar um desafio para ser utilizado na autenticação por certificado digital.a <?php $serv = new SoapClient("$url"); $challenge = $serv->challenge_generator()->retorno->info->challenge;?> 4.5. Chamando o script de autenticação Veremos agora como deve ser chamado o Java Applet para autenticação com o certificado digital. authurl: URL que receberá o POST com as informações para autenticação. <script src="https://www.indisponibilidade.org.br/icp/bravo.php>"></script> <script> arispbravo.carrega({ authurl: targeturl, challenge: "<?php echo $challenge;?>", showbox: showboxcontent, callback: function() { // conteúdo para callback ); </script> challenge: O desafio gerado no passo anterior showbox: Uma linha de código ou a instancia de um objeto do HTML para servir de gatilho para o autenticador callback: função que será executada após carregar o Java Applet, por exemplo, pode mandar exibir o showbox caso esteja oculto. 4.6. Método: auth - processo de autenticação Nesta parte veremos como deve ser feita a autenticação utilizado os valores enviados pelo processo acima. <?php $serv = new SoapClient("$url"); $auth = array( "challenge" => $_POST["challenge"], "signature" => $_POST["signature"], "certificate" => $_POST["certificate"], "token" => "LilH4NDK9NY93d/zHbhdDv2+VOkv/tzIwjRY44YeIijvmeKVaJjvKmfO9xfQO+BktEo5+RfElgkQ/ Uy87YV4XDWE0EutmhQzmgoj2/SckWBirIPMFRk6MRkzpF3opLvicxcLpn3YI7zspf0K/ di8atfctgq6dgqs5tduojyjstxvebbg9a7vhh0irdulhs26" ); $conn = $serv->auth($auth)->retorno; if ($conn->sucess) { $session_id = $conn->info->session_id; else { echo $conn->info->faultmessage;?> 10

4.7. Método: consulta Agora iremos consultar se uma determinada pessoa está indisponibilizada, ou não. <?php $serv = new SoapClient("$url"); $consulta = array ( "session_id" => $session_id, "documento" => '12345678901' ); $retorno = $serv->consulta($consulta)->retorno; if ($retorno->success) { print_r($retorno->info->documento); echo $retorno->info->hash; else { echo $auth->info->faultmessage;?> 11

5. Definição de Regras e Serviços (em C#) Agora iremos ver os mesmos exemplos acima, só que utilizando C#. 5.1. Instanciando o WebService Após declarar o WSDL no C#, nomeando de CNI, vamos criar uma instancia do WebService. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { cni.serv serv = new cni.serv(); 12

5.2. Método: challenge_generator using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { cni.serv serv = new cni.serv(); string challenge = serv.challenge_generator().retorno.info.challenge; 5.3. Método: auth using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { cni.serv serv = new cni.serv(); cni.auth auth = new cni.auth(); var html = HttpContext.Current; auth.challenge = html.request.form["token"] = "LilH4NDK9NY93d/zHbhdDv2+VOkv/ tziwjry44yeiijvmekvajjvkmfo9xfqo+bkteo5+rfelgkq/uy87yv4xdwe0eutmhqzmgoj2/ SckWBirIPMFRk6MRkzpF3opLvicxcLpn3YI7zspf0K/di8AtFCtGq6dgQs5tdUOjyjsTxvEBBG9A7Vhh0IRdULHs26"; auth.challenge = html.request.form["challenge"]; auth.signature = html.request.form["signature"]; auth.certificate = html.request.form["certificate"]; var retorno = serv.auth(auth).retorno; if (retorno.success) { string session_id = retorno.info.session_id; else { Response.Write(retorno.info.faultMessage); 13

5.4. Método: consulta 10/24/14 04:11:42 Untitled using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string session_id = ""; cni.serv serv = new cni.serv(); cni.consulta consvars = new cni.consulta(); pesqvars.session_id = session_id; pesqvars.documento = "12345678901"; var retorno = serv.consulta(consvars).retorno; if (retorno.success) { var documento = retorno.info.documento; var hash = retorno.info.hash; else { Response.Write(retorno.info.faultMessage); 14