7. Consumindo Web Services

Propaganda
SCR – Sistema de Informações de Crédito
Manual de Utilização de Web Services: UC19 Consultar Informações de Cliente no SFN por meio de
Web Service
Versão 1.2
Histórico de Revisão
Data
Versão
Descrição
19/10/2004
1.0
Manual de Utilização de Web Services
DEINF - Gilmar Santos
09/11/2004
1.1
Alteração do prefixo do usuário virtual
DEINF – Gilmar Santos
19/11/2004
1.2
Esclarecimento para Keystore da configuração do
certificado
DEINF – Gilmar Santos
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Autor
Versão: 1.2
Data: 19/11/2004
Página 2 de 20
Sumário
1.
2.
Consulta da Posição de Clientes
4
1.1
4
Atores
2.1
3.
4.
5.
6.
Aplicativo da IF.
4
4
3.1
Para utilização do Caso de Uso: UC19 – Consultar Informações de Cliente no SFN por meio
de WebService:

O usuário deverá está cadastrado no serviço WSCR0001 no sistema AUTRAN do Bacen;

O usuário virtual deverá ter o prefixo ‘s_’.
4
4
4
Fluxo de Eventos
4
4.1
4
Fluxo Básico
Pós-condições
5
5.1
5
5
5
5
De acordo com o tipo de arquivo gerado:
5.1.1 Informações solicitadas retornadas ao aplicativo da IF,
5.1.2 Log de Consulta de Clientes atualizado e
5.1.3 Informações para cobrança registradas
Regras de Negócio Específicas
6.3
6.4
6.5
6.6
6.7
6.8
8.
4
Pré-Condições
6.1
6.2
7.
Breve Descrição
5
(RN01) Parâmetros a serem informados pelas IF's
(RN02) Critérios para os campos informados pela IF
6.2.1 Campo Tipo de Pessoa
6.2.2 Campo Código de Cliente
6.2.3 Campo Data-base
6.2.4 Tratamento para os campos não informados
(RN03) Critério para verificar se a If está habilitada a consultar a data-base solicitada
(RN05) Informações a serem retornadas por consulta
(RN06) Dados alterados por Decisão Judicial ou Vícios de Contrato
(RN07) Atualização do log de consulta a clientes
(RN08) Registro de informações de cobrança
(RN09) Datas-Base
5
5
5
5
6
6
6
6
10
10
10
11
Consumindo Web Services
11
7.1
O documento WSDL
7.1.1 Acesso ao documento WSDL
7.2
Acesso ao Web Service
7.2.1 Estrutura da URL
7.2.2 O Protocolo HTTPS
11
11
11
11
11
Clientes Java Stand-alone
12
8.1
12
12
13
Suporte a SSL (JSSE)
8.1.1 Configurando o JSSE em JVMs 1.3
8.1.2 Reconhecendo o Protocolo HTTPS
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 3 de 20
9.
8.2
Certificados Digitais
8.2.1 Certificados e o Utilitário "keytool"
8.3
Autenticação
8.4
Possíveis Erros
13
14
16
16
Clientes J2EE
17
10.
10.1
10.2
10.3
11.
9.1.1 JBoss 3.2.x
9.1.2 WebSphere 5.x
17
18
Clientes .NET
19
Importando os certificados
Importando o WSDL
Observações adicionais
Observações Finais
19
19
20
20
Manual de Utilização de Web Services: UC19 Consultar Informações de Cliente no SFN por meio de
Web Services
1.
Consulta da Posição de Clientes
1.1
Breve Descrição
Possibilita às Instituições Financeiras consultarem informações no SCR de Clientes no SFN utilizando o
recurso Web Service como forma de acesso.
Cada consulta efetuada por uma IF será referente a um único cliente e a uma única data-base.
2.
Atores
2.1
Aplicativo da IF.
3.
Pré-Condições
3.1
Para utilização do Caso de Uso: UC19 – Consultar Informações de Cliente no SFN por meio de Web
Services:

O usuário deverá está cadastrado no serviço WSCR0001 no sistema AUTRAN do Bacen;

O usuário virtual deverá ter o prefixo ‘s-.
4.
Fluxo de Eventos
4.1
Fluxo Básico
(P01) Este caso de uso começa quando o aplicativo de uma determinada IF efetua uma consulta ao SCR de
SCR - Sistema de Informações de Crédito
Versão: 1.2
Manual de Utilização do Web Services
Data: 19/11/2004
769908663
Página 4 de 20
um determinado cliente no SFN para uma determinada data-base. [RN01]
(P02) Para cada consulta, o sistema do Bacen, efetua todos os passos abaixo :
(P02.1) Lê os parâmetros da consulta informados pela IF
(P02.2) Verifica se os parâmetros são válidos e, se estão, formatados adequadamente [RN02]
(P02.3) Verifica se a IF está habilitada a efetuar consulta[RN03]
(P02.4) Verifica se a data-base indicada está disponível para consulta [RN09]
(P02.5) Monta a estrutura de dados de retorno.[RN05] [RN06]
(P02.6) Atualiza o log de consulta a clientes[RN07]
(P03) O caso de uso termina quando o sistema efetua o Registro de Informações de Cobrança. [RN08]
5.
Pós-condições
5.1
De acordo com o tipo de arquivo gerado:
5.1.1
Informações solicitadas retornadas ao aplicativo da IF,
5.1.2
Log de Consulta de Clientes atualizado e
5.1.3
Informações para cobrança registradas
6.
Regras de Negócio Específicas
6.1
(RN01) Parâmetros a serem informados pelas IF's
As IF's deverão informar os seguintes parâmetros para cada consulta efetuada :
- Código do Cliente consultado (CNPJ / CPF)
- Tipo do Cliente (1 ou 2)
- Data-base a ser consultada ('AAAA-MM')
6.2
(RN02) Critérios para os campos informados pela IF
6.2.1
Campo Tipo de Pessoa
O campo Tipo de Pessoa deverá ser composto por 1 dígito numérico, sendo válidos apenas os valores '1'
para Pessoa Física com CPF e '2' para Pessoa Jurídica com CNPJ. Caso estas condições não sejam
atendidas deverá ser enviada a mensagem : ' Tipo de Cliente informado inválido: tipo_cliente'
6.2.2
Campo Código de Cliente
O Código do Cliente deverá ser composto por 8 ou 11 dígitos numéricos e deverá está formatado conforme
a definição abaixo :
a.
Tipo de Pessoa = 1 (Pessoa Física) : Código do Cliente de 11 dígitos (CPF)
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 5 de 20
b.
Tipo de Pessoa = 2 (Pessoa Jurídica) : Código do Cliente de 8 dígitos (CNPJ)
Se o código informado não estiver adequado ao tipo de pessoa, conforme a definição acima, o sistema deve
enviar uma das seguintes mensagens: ‘CPF inválido: código_cliente’ ou ‘CNPJ inválido: código_cliente’.
6.2.3
Campo Data-base
O campo Data-base deverá estar no formato ano/mês ('AAAA-MM').
Caso o campo não esteja formatado corretamente e não puder ser interpretado como um mês válido, o
sistema irá enviar a mensagem: ' Data-base : formato inválido'.
6.2.4
Tratamento para os campos não informados
Se um dos campos não for informado deverá ser enviada a mensagem correspondente ao campo em
questão. A mensagem a ser enviada: ' Tipo de Cliente : informação obrigatória' ou ' Código de Cliente:
informação obrigatória' ou 'Data-base : informação obrigatória'.
6.3
(RN03) Critério para verificar se a If está habilitada a consultar a data-base solicitada
As informações serão fornecidas apenas se o status da IF na data-base requisitada para o Doc3020 for
“Disponível Externamente” ou 'Dispensada'.
Se a condição acima não for satisfeita deverá ser enviada a seguinte mensagem : 'Data-base indisponível
para a Instituição Financeira' .
6.4
(RN05) Informações a serem retornadas por consulta
Para cada consulta, serão retornadas as seguintes informações:
- Código do cliente
- Tipo do cliente
- Data-base
% dos documentos 3020 esperados para a data-base e que já foram processados
(desconsiderando as IF’s Dispensadas)
- % do volume esperado para a data-base e que já está processado (desconsiderando as IF’s
Dispensadas)
- Quantidade de operações do cliente no SFN
- Quantidade de IFs nas quais o cliente possui operações
- Quantidade de operações sub judice
- Responsabilidade total de operações sub judice
- O valor correspondente a cada código de vencimento para cada:
o Modalidade de operação
o Vinculação à moeda estrangeira
O valor de cada código de vencimento a ser informado é dado pelo somatório de todas as operações de
cliente, consolidadas ou individualizadas, que tiverem a mesma modalidade/submodalidade e vinculação à
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 6 de 20
moeda estrangeira. Somente serão informados códigos de vencimento cujos valores sejam maiores que
zero.
As modalidades a serem consideradas estão descritas no leiaute a seguir:
Layout 1: Modalidade Operação - Mod
Domínio Abreviação (40)
01
Adiantamento à depositante
02
Empréstimos
03
Títulos descontados
04
Financiamentos
05
Fin à exportação
06
Fin à importação
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Sub
00
01
00
01
02
03
04
05
06
07
08
09
90
99
00
01
02
03
99
00
01
02
03
04
05
90
99
00
01
02
03
04
90
99
00
01
90
00
01
Abreviação (40)
Adiantamento à depositante
Adiant depos - adiantamento
Empréstimos
Emp - chq especial ou cta garant
Emp - pessoal com consignação
Emp - pessoal sem consignação
Emp - vinculado a cartão crédito
Emp - cap giro inferior 30d
Emp - cap giro igual ou super 30d
Emp - vendor
Emp - compror
Emp - ARO
Emp - financ projeto
Emp - outros
Títulos Descontados
Tít Desc - duplicatas
Tít Desc - cheques
Tít Desc - fatura cartão crédito
Tít Desc - outros
Financiamentos
Financ - veículos autom
Financ - outros bens
Financ - microcrédito
Financ - vendor
Financ - compror
Financ - financ projeto
Financ - outros
Fin à exportação
Fin Export - financ à export
Fin Export - ACC
Fin Export - ACE
Fin Export - export note
Fin Export - financ projeto
Fin Export - outros
Fin à importação
Fin Import - financ à importação
Fin Import - financ projeto
Fin com interveniência
Fin Interv - veículos automotores
Versão: 1.2
Data: 19/11/2004
Página 7 de 20
07
Fin com interveniência
08
Fin rural e agroind
09
Fin imobiliários
10
Fin TVM
11
Fin infra-estr e desenv
12
Op. de arrendamento
13
Outros créditos
14
Repasses interfinanceiros
15
Coobrigações
16
Créditos a liberar
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
02
90
99
00
01
02
03
90
00
01
02
03
90
00
01
00
01
90
00
01
02
03
04
90
00
01
02
03
90
99
00
01
00
01
02
03
11
12
90
99
00
01
02
90
99
Fin Interv - outros bens
Fin Interv - financ projeto
Fin Interv - outros
Fin Rural e Agroind
Fin Rural - custeio
Fin Rural - investimento
Fin Rural - comercialização
Fin Rural - financ projeto
Fin Imobiliários
Fin Imob - SFH
Fin Imob - carteira hipotecária
Fin Imob - empreendimentos
Fin Imob - financ projeto
Fin TVM
Fin TVM - finaciamento de TVM
Fin Infra-Estr e Desenv
Fin Infra-Estr - financ
Fin Infra-Estr - financ projeto
Op. de Arrendamento
Arrend - financeiro
Arrend - financeiro imobiliário
Arrend - subarrendamento
Arrend - financeiro vinculado
Arrend - financ projeto
Outros créditos
Outros - avais e fianças honrados
Outros - devedor compra de bens
Outros - títulos e créditos a receb
Outros - financ projeto
Outros - com característica créd
Repasses interfinanceiros
Repasses interfinanceiros - repasses
Coobrigações
Coobrig - beneficiário PJ financ
Coobrig - beneficiário outras pess
Coobrig - fundos constitucionais
Coobrig - cessão a PJ financ
Coobrig - cessão a outras pess
Coobrig - financ projeto
Coobrig - outras
Créditos a liberar
Créd liberar - SFH
Créd liberar - crédito rotativo
Créd liberar - financ projeto
Créd liberar - outros
Versão: 1.2
Data: 19/11/2004
Página 8 de 20
17
Operações vinculadas
50
Créditos baixados como prejuízo
01 Op. Vinculadas - op. de crédito
00 Não informada
01 Não informada
A vinculação à moeda estrangeira a ser considerada é a descrita no leiaute a seguir:
Layout 02: Vinculação à Moeda Estrangeira - VincME
Domínio
S
N
Sim
Não
O campo Vinculação à Moeda Estrangeira por não ser informado no Doc3020 deverá ter seu conteúdo deduzido do
campo Variação Cambial, segundo o modelo a seguir:
Layout 3: Variação Cambial - VarCamb
Domínio
220
425
470
540
978
999
Abreviação (40)
Dólar
Franco
Iene
Libra
Euro
Outras
Assim, quando existir variação cambial, o campo Vinculação à Moeda Estrangeira será informado com valor "Sim".
Caso contrário (não existir valor cambial) esse campo não será informado.
Os códigos de vencimentos a serem considerados são os descritos no documento a seguir:
Layout 4: Código do Vencimento - CodVenc
Domínio
110
120
130
140
150
160
165
170
175
180
190
199
Abreviação (40)
a vencer até 30d
a vencer 31 a 60d
a vencer 61 a 90d
a vencer 91 a 180d
a vencer 181 a 360d
a vencer 361 a 720d
a vencer 721 a 1080d
a vencer 1081 a 1440d
a vencer 1441 a 1800d
a vencer 1801 a 5400d
a vencer acima de 5400d
a vencer indeterminado
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 9 de 20
205
210
220
230
240
245
250
255
260
270
280
290
310
320
vencido 1 a 14d
vencido 15 a 30d
vencido 31 a 60d
vencido 61 a 90d
vencido 91 a 120d
vencido 121 a 150d
vencido 151 a 180d
vencido 181 a 240d
vencido 241 a 300d
vencido 301 a 360d
vencido 361 a 540d
vencido acima de 540d
baixado até 12m
baixado de 12m a 48m
Caso o cliente consultado não possua operação no SFN na data-base solicitada será retornada apenas a
Data-base consultada, o Código e o Tipo do Cliente.
Os campos referentes à operação sub judice somente serão listados caso o cliente possua operações que
estejam nessa situação.
6.5
(RN06) Dados alterados por Decisão Judicial ou Vícios de Contrato
As “operações excluídas por determinação judicial” e as “operações excluídas por vícios de contrato” não
serão consideradas nas informações a serem retornadas.
As informações de uma IF referentes a um “cliente excluído por determinação judicial” ou referentes a um
cliente com todas as operações excluídas, seja por determinação judicial, seja por vícios de contrato, não
serão consideradas. Caso o cliente possua exclusivamente operações na referida IF, será considerado
cliente sem operação no SFN na data-base solicitada.
Para as “operações marcadas sub judice”, devem ser considerados normalmente os valores das operações.
6.6
(RN07) Atualização do log de consulta a clientes
- Data e hora do processamento
- Código do Cliente consultado (CNPJ / CPF)
- Tipo do Cliente (1 ou 2)
- CNPJ da IF Solicitante
- Tipo da consulta (consulta Web Service = 'S')
- Operador Solicitante (o código sisbacen do operador logado, é o mesmo da IF solicitante).
6.7
(RN08) Registro de informações de cobrança
As informações serão registradas, por consulta realizada, para cobrança futura.
Caso a consulta resulte em erro e não tenha sido enviada nenhuma informação, não haverá registro para
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 10 de 20
cobrança. No entanto, se a consulta não incorrer em erro e o cliente não possuir operação a ser informada
(RN06 e RN07) o registro para cobrança será efetuado.
6.8
(RN09) Datas-Base
As informações serão fornecidas apenas se o status da IF na data-base requisitada para o Doc3020 for
“Disponível Externamente” ou “Dispensada”.
Se a condição acima não for satisfeita deverá ser enviada a seguinte mensagem: ‘Data-base indisponível
para a Instituição Financeira’.
7.
Consumindo Web Services
7.1
O documento WSDL
Todo web service é descrito por um documento WSDL (Web Service Definition Language). Este
documento descreve todas os serviços, seus parâmetros de entrada e saída e até mesmo a estrutura de dados destes
parâmetros caso esta seja complexa.
O documento WSDL sempre estará disponível através de um link ou no site do BC ou na própria aplicação
web provedora do web service:
O documento WSDL deve ser utilizado pelos desenvolvedores das aplicações que consomem os web
services para a geração de stubs de comunicação através de uma IDE apropriada. Uma IDE tipicamente irá analisar
o WSDL e produzir código que implemente a comunicação de rede para invocação dos serviços. Mais ainda, a IDE
caberá também reproduzir, na linguagem de programação em questão, as estruturas de dados necessárias para
representar os parâmetros de entrada e saída do web service.
7.1.1
Acesso ao documento WSDL
As URLs para acesso ao documento WSDL em homologação e em produção são obtidas através dos
seguintes links, respectivamente:
Homologação: https://www3.bcb.gov.br/hml/wsscr/ e
Produção: https://www3.bcb.gov.br/wsscr/ - a partir do momento em que o sistema esteja disponibilizado
em produção.
7.2
Acesso ao Web Service
7.2.1
Estrutura da URL
O stub gerado pela importação do WSDL inclui uma URL de acesso ao web service. Embora esta URL
certamente possa ser manipulada após a geração do stub é preciso lembrar que ela deve obviamente representar um
caminho que possa alcançar o servidor web que hospeda o web service.
As URLs para acesso ao web services em homologação e em produção são as seguintes:
Homologação: https://www3.bcb.gov.br/hml/wsscr/services/ControleCliente e
Produção: https://www3.bcb.gov.br/wsscr/services/ControleCliente - a partir do momento em que o sistema
esteja disponibilizado na produção
7.2.2
O Protocolo HTTPS
Quando as requisições SOAP trafegam pela rede o seu conteúdo - texto XML - poderia ser observado por
terceiros. Embora existam diversas propostas para se impor segurança por criptografia em mensagens SOAP, a
arquitetura mais simples consiste em delegar esta tarefa ao transporte da mensagem, utilizando-se HTTPS no lugar
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 11 de 20
de HTTP.
Quando o web service estiver disponível apenas via HTTPS há que se observar que o reconhecimento das
autoridades emissoras dos certificados digitais dos servidores é pré-requisito para o funcionamento das aplicações
clientes. Para clientes .NET a instalação dos certificados digitais pode ser feita diretamente pelo browser (v.
"10Clientes .NET"). Para clientes Java/J2EE (v. "8Clientes Java"), a instalação dos certificados digitais deve ser
feita pela ferramenta de linha de comando keytool (ou, antes ainda, em JVMs 1.3 talvez seja necessário instalar o
pacote JSSE da Sun).
8.
Clientes Java Stand-alone
Aplicações Java stand-alone podem decerto consumir web services. Em teoria, qualquer aplicação que seja
capaz de produzir um request HTTP poderia ser capaz de consumir web services. Todavia produzir manualmente
uma requisição SOAP é um trabalho braçal impraticável; tais documentos XML são extensos e de sintaxe não
trivial.
Felizmente hoje em dia qualquer IDE Java traz consigo assistentes para a criação de stubs Java a partir de
documentos WSDL, tornando a criação de clientes de web services simples e direta. Para os adeptos do mundo open
source, o Projeto Apache Web Services (http://ws.apache.org) possui uma implementação de SOAP bastante
evoluída: o Projeto Axis (http://ws.apache.org/axis). De fato, boa parte das implementações SOAP do mercado
baseiam-se no Axis.
8.1
Suporte a SSL (JSSE)
A JVM J2SE 1.3 original da Sun não incorpora suporte ao protocolo SSL (utilizado no HTTPS), sendo
necessária a instalação do pacote opcional JSSE (Java Secure Socket Extension). O JSSE pode ser baixado do site da
Sun (http://java.sun.com/products/jsse).
JVMs 1.3 que acompanham a instalação de produtos de terceiros (ex: JVM 1.3 da IBM que acompanha o
WebSphere 5.0) possivelmente já trazem consigo o próprio pacote JSSE da Sun ou alguma extensão do mesmo,
sendo portanto desnecessária sua instalação. O administrador (ou desenvolvedor) deve consultar a documentação do
produto para certificar-se que esta instalação se faz necessária. Uma maneira alternativa é simplesmente inspecionar
a pasta [JAVA_HOME]/jre/lib/ext e procurar pelo arquivo "jsse.jar" (ou "*jsse.jar") - sua existência é uma indicação
de que o JSSE (ou extensão semelhante) foi instalado.
Por outro lado JVMs 1.4 já incluem o JSSE, sendo desnecessária sua instalação manual. É preciso lembrar
que não importa qual é a versão de JVM em que executam os servidores que implementam os web services (de fato
tampouco é relevante se estes foram desenvolvidos em Java ou não). Assim sendo, aplicações cliente stand-alone
escritas em Java teriam uma instalação mais simples caso rodem sobre JVMs 1.4.
8.1.1
Configurando o JSSE em JVMs 1.3
Este tópico diz respeito apenas a JVMs 1.3. Usuários de JVMs 1.4 podem seguir diretamente para o tópico
seguinte. Usuários de JVMs 1.3 devem verificar se a instalação do JSSE é realmente necessária antes de fazê-la.
Basicamente a instalação do JSSE traduz-se na cópia de alguns JARs para a pasta de extensão da JVM
([JAVA_HOME]/jre/lib/ext). Além da cópia destes arquivos, é sugerido que seja feita a inclusão de uma linha na
configuração de segurança da JVM (arquivo "([JAVA_HOME]/jre/lib/security/java.security") para que seja
registrado o provedor de criptografia SSL:
security.provider.X=com.sun.net.ssl.internal.ssl.Provider
Note que "X" é o próximo inteiro livre na seqüência de provedores enumerados. Se esta configuração
estática não for feita, ainda assim a aplicação pode realizar este registro dinamicamente em tempo de execução:
Security.addProvider((Provider)Class.forName(
"com.sun.net.ssl.internal.ssl.Provider").newInstance());
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 12 de 20
É bom lembrar que JARs copiados para a pasta de extensão supra-citada automaticamente estarão no
classpath de qualquer aplicação executada por esta JVM.
8.1.2
Reconhecendo o Protocolo HTTPS
Além do suporte à criptografia SSL, o suporte a um "novo" protocolo (HTTPS) deve ser configurado para
que o pacote java.net o reconheça. Trata-se aqui de uma simples variável de sistema ajustada pelo parâmetro "-D"
da JVM:
java -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol
Se esta configuração estática não for feita, ainda assim a aplicação pode ajustar esta variável de sistema em
tempo de execução:
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
8.2
Certificados Digitais
Toda conexão HTTPS pressupõe a existência de um certificado digital válido no servidor web com o qual a
conexão é estabelecida. Este certificado, por sua vez, foi emitido por uma autoridade certificadora, a qual também
deve ser considerada confiável.
Quando se navega em um site via HTTPS, o browser sempre nos alerta caso o certificado digital do mesmo
não seja considerado válido ou confiável. O exemplo abaixo se refere a um certificado cujo emissor não é
considerado confiável:
Figura 1 - Certificado inválido
Pressionando-se o botão ‘Exibir certificado’ será exibida uma descrição mais detalhada do problema:
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 13 de 20
Figura 2 - Exibição do certificado
Neste caso, é o certificado da autoridade certificadora (SERPRO) que não é considerado confiável pelo
browser. Há, nesta tela, a possibilidade de se instalar o certificado de forma que o browser passe a reconher o
SERPRO como uma autoridade confiável1.
Cabe observar que as telas (e procedimentos para exportação dos certificados para arquivos) que aqui
foram exibidas são as apresentadas pelo Internet Explorer. Todavia qualquer browser há de apresentar as mesmas
funcionalidades.
8.2.1
Certificados e o Utilitário "keytool"
Instalados no browser ou não, estes certificados devem ser gravados em arquivos locais para que possamos
importá-los para dentro do keystore da JVM. O keystore é, entre outras coisas, a ferramenta que gerencia os
repositórios de certificados de autoridades confiáveis. Fisicamente, o keystore é um arquivo binário cuja localização
default é "[JAVA_HOME]/jre/lib/security/cacerts", embora possa ser configurada para qualquer caminho de arquivo
pela propriedade de sistema "javax.net.ssl.trustStore".
Para manipular o keystore existe a ferramenta keytool. Para, por exemplo, listar todos os certificados e
chaves armazenadas no keytool basta digitar:
keytool -list -keystore [KEYSTORE]2 -storepass changeit
O certificado do servidor aceito pelo browser (veja figura abaixo) pode ser exportado para um arquivo
".cer". Este arquivo contém não apenas o certificado do servidor como também o da autoridade certificadora que o
emitiu (i.e. o "caminho de certificação"):
1
Os certificados do SERPRO também podem ser baixados e instalados diretamente do site
https://thor.serpro.gov.br/ACSERPROSPB.
2
Considere [KEYSTORE] = [JAVA_HOME]/jre/lib/security/cacerts. A senha padrão para o keystore do JDK da Sun é "changeit",
mas isto pode ser mudado pelo próprio keytool.
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 14 de 20
Figura 3 - Caminho de certificação
Figura 4 - Exportando o certificado
Pela opção "Copiar para arquivo..." pode ser gerado localmente um arquivo com o certificado (ex:
"C:\TEMP\bccert.cer").
Para importar para dentro do keystore os certificados das autoridades certificadoras basta portanto o
comando abaixo:
keytool -import -alias bccerts -file C:\TEMP\bccert.cer
-keystore [KEYSTORE] -storepass changeit
[KEYSTORE] = p. ex: C:\j2sdk1.4.2_03\jre\lib\security\cacerts; esse certificado deverá ser instalado para a JVM
SCR - Sistema de Informações de Crédito
Versão: 1.2
Manual de Utilização do Web Services
Data: 19/11/2004
769908663
Página 15 de 20
que efetivamente estará sendo utilizada.
Figura 5 - Importando certificados para a JVM
8.3
Autenticação
Web services também podem demandar autenticação de seus usuários. Neste caso, como o cliente
provavelmente é uma aplicação que executa de forma não assistida, a forma de autenticação é a clássica BASIC3, e
não um formulário HTML (o qual não faria sentido neste contexto).
Os objetos criados pelas IDEs para utilização do web service decerto terão métodos para o fornecimento de
login e senha. Portanto, as IFs farão uso de usuários virtuais para a autenticação em web services4.
8.4
Possíveis Erros
Os erros de execução mais comuns de aplicações Java stand-alone que consomem web services podem ser
explicados na lista abaixo:
"java.net.MalformedURLException: unknown protocol: https": o JSSE pode não estar instalado na
JVM que executa a aplicação, ou a propriedade de sistema "java.protocol.handler.pkgs" não foi ajustada;
"javax.net.ssl.SSLException: untrusted server cert chain" ou "javax.net.ssl.SSLHandshakeException:
bad certificate": os certificados digitais do servidor web apontado na URL não são válidos e/ou não estão
registrados no keystore.
3
Ao contrário do que geralmente se escuta, as formas BASIC e FORM são, na prática, igualmente inseguras - a não ser que
trafeguem sobre HTTPS, onde então ambas serão seguras.
4
O uso de certificados digitais que dispensem a autenticação por login e senha está previsto para o futuro.
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 16 de 20
9.
Clientes J2EE
O caso de uso mais comum para um web service do BC poderá ser, muito em breve, não o de uma
aplicação stand-alone (como uma aplicação batch, por exemplo), mas sim o de um componente acionado por uma
aplicação on-line disponibilizada pelas próprias IFs aos seus clientes e agências.
Neste caso, o cliente do web service é o próprio servidor de aplicações, o qual opera por definição de forma
não assistida. Em ambientes de maior complexidade o administrador deve atentar para a possibilidade de haver
diferentes máquinas executando cada uma diversas instâncias do servidor de aplicações (como nos ambientes
clusterizados). Isto significa que certos cuidados devem ser tomados: os keystores de todas as JVMs devem ser
mantidos idênticos, por exemplo, ou eventuais parâmetros de JVM devem ser fornecidos da maneira apropriada.
Sobretudo, deve ser previamente estudado o impacto destas mudanças no servidor J2EE.
O consumo de web services via HTTP a partir das aplicações que executam sobre um servidor J2EE não
exige a priori nenhuma configuração adicional no mesmo. Para o servidor de aplicações estes eventos são
transparentes. Contudo, se o acesso aos web services remotos se dá via HTTPS, devemos saber se o servidor J2EE (e
sua JVM) estão preparados para fazê-lo.
Todo servidor J2EE tem suas particularidades, e uma cuidadosa inspeção deve ser feita antes de se
modificar uma configuração global na JVM, como veremos.
9.1.1
JBoss 3.2.x
A instalação do JBoss 3.2.x não traz consigo nenhuma JVM – pressupõe-se que o administrador fez uma
instalação prévia de um JDK 1.3 ou superior. Para que uma aplicação que executa sobre o JBoss possa fazer
requisições HTTPS é necessário habilitar o protocolo HTTPS (v. “Reconhecendo o Protocolo HTTPS”) de uma
maneira que não afete o funcionamento normal do JBoss. É necessário também importar os certificados de
segurança para a JVM (v. “Certificados Digitais”).
O boot do JBoss 3.2.x já impõe um valor default para a propriedade "java.protocol.handler.pkgs" da JVM,
uma vez que este produto define um protocolo proprietário ("jnp://"). O ideal é que possamos acrescentar o
protocolo HTTPS aos protocolos com os quais o JBoss já sabe lidar.
Temos diversas maneiras de modificar esta configuração. A forma "padrão" ainda é acrescentar o
parâmetro "-D" na JVM, modificando o arquivo batch que executa o JBoss (arquivo "[JBOSS_HOME]/bin/run.bat"
em máquinas Windows). Neste batch é fácil localizar a linha de comando que dispara a JVM do servidor e
acrescentar a entrada "-D":
"%JAVA%" %JAVA_OPTS% -Djava.protocol.handler.pkgs=
com.sun.net.ssl.internal.www.protocol
-classpath "%JBOSS_CLASSPATH%" org.jboss.Main
No arquivo "boot.log" criado após levantar o JBoss pode ser vista a lista de protocol handler packages que
o mesmo agora reconhece:
07:10:02,656 DEBUG [ServerInfo]
java.protocol.handler.pkgs:
com.sun.net.ssl.internal.www.protocol|org.jboss.net.protocol
Note que o JBoss acrescentou também um handler modificando esta propriedade de sistema sem
sobrescrever o valor sugerido. Devemos proceder da mesma forma caso optemos por alterar esta configuração em
tempo de execução (e não via script):
String prop = System.getProperty("java.protocol.handler.pkgs");
if (prop == null)
prop = "com.sun.net.ssl.internal.www.protocol";
else if (prop.indexOf("com.sun.net.ssl.internal.www.protocol") < 0)
prop = prop + "|com.sun.net.ssl.internal.www.protocol";
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 17 de 20
System.setProperty("java.protocol.handler.pkgs",prop);
Ainda outra forma possível é acrescentar uma entrada no arquivo "properties-service.xml" (localizado na
pasta "[JBOSS_HOME]/server/default/deploy"), tomando o devido cuidado para não sobrescrever o valor que
sabemos ser o default:
<mbean code="org.jboss.varia.property.SystemPropertiesService"
name="jboss:type=Service,name=SystemProperties">
<attribute name="Properties">
…
java.protocol.handler.pkgs=org.jboss.net.protocol|
com.sun.net.ssl.internal.www.protocol
…
</attribute>
</mbean>
Qualquer uma destas três abordagens terá sucesso em habilitar o protocolo HTTPS. Note que o próprio
JBoss já traz consigo o pacote JSSE, não sendo necessário instalá-lo diretamente sobre a JVM.
A importação dos certificados, por sua vez, pode ser feita exatamente como descrito no capítulo anterior
(tópico "Certificados Digitais").
9.1.2
WebSphere 5.x
O WebSphere já vem configurado com o que é necessário para se estabelecer conexões HTTPS, não sendo
necessário nem instalar o JSSE nem tampouco fornecer qualquer propriedade de sistema.
A única coisa que deve ser feita é a importação dos certificados, a exemplo do capítulo anterior. A
localização default do keystore, porém, é diferente da default para JVMs, sendo no WebSphere o caminho
"[WAS_ROOT]/etc/DummyServerTrustFile.jks". O administrador deve verificar no console administrativo quais
são os keystores (ou mesmo apontar no console para outros keystores que tenha criado arbitrariamente com o
keytool).
O mesmo keytool apresentado no capítulo anterior deve ser utilizado para importar os certificados,
tomando cuidado para fornecer o caminho correto do keystore. A senha padrão no WebSphere para os keystores
criados na instalação do produto é "WebAS".
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 18 de 20
10.
Clientes .NET
10.1
Importando os certificados
Clientes .NET também exigem que os certificados tenham sido importados e registrados como confiáveis.
Isto pode ser feito a partir do próprio browser, na opção "Instalar certificado".
10.2
Importando o WSDL
Em uma aplicação (stand-alone ou web) deve ser criada uma web reference:
Figura 6 - Criando uma web reference
No passo seguinte deve ser fornecido o caminho para o documento WSDL (pode ser um caminho local para
onde foi feito um download do WSDL ou mesmo uma URL para o documento original):
Figura 7 - Importando o WSDL
Após este passo as classes de dados e o stub serão criados pelo próprio Visual Studio .NET, sendo sua
manipulação bastante simples.
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 19 de 20
10.3
Observações adicionais
Embora a documentação fornecida dos web services implementados pelo BC tenha tipicamente a sintaxe
Java, trata-se apenas de exemplos que ilustram o uso.
11.
Observações Finais
O uso de web services é ainda experimental. O BC conta com a ajuda das IFs envolvidas no processo para
que se alcance um resultado satisfatório.
O BC pode ser contatado pelas IFs para ajudá-las nesta fase inicial do desenvolvimento de suas próprias
aplicações-clientes.
Para dúvidas sobre o conteúdo e APIs dos web services do SCR, entrar em contato com:
 Suely Haruko Takahashi Iwamoto (61-414-3602);
 Henrique Claudio Ferreira (61-414-3640);
 André Carvalho (61-414-3537).
SCR - Sistema de Informações de Crédito
Manual de Utilização do Web Services
769908663
Versão: 1.2
Data: 19/11/2004
Página 20 de 20
Download