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.3 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 01/12/2004 1.3 Adequação de Texto as sugestões da Área de Negócio DEINF – Gilmar Santos SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Autor Versão: 1.2 Data: 19/11/2004 Página 2 de 18 Sumário 1. 2. Consulta da Posição de Clientes 4 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 4 4 4 4 4 4 5 5 6 6 6 6 6 Regras de Negócio Específicas 6 2.1 2.2 6 6 6 6 6 6 7 7 7 8 8 8 8 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3. 4. 5. Breve Descrição Atores Aplicativo da IF. Pré-condições Fluxo de Eventos Fluxo Básico Fluxos Alternativos Exceções Pós-condições De acordo com o tipo de arquivo gerado: 1.10.1 Informações solicitadas retornadas ao aplicativo da IF 1.10.2 Log de Consulta de Clientes atualizado 1.10.3 Informações para cobrança registradas (RN01) Parâmetros a serem informados pelas IF's (RN02) Critérios para os campos informados pela IF 2.2.1 Campo Tipo de Cliente 2.2.2 Campo Código de Cliente 2.2.3 Campo Data-base 2.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 (RN04) Critério para verificar se a data-base está disponível para consulta (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 para Tarifação (RN09) Datas-Base Utilizando Web Services 8 3.1 O documento WSDL 3.1.1 Acesso ao documento WSDL 3.2 Acesso ao Web Service 3.2.1 Estrutura da URL 3.2.2 O Protocolo HTTPS 8 9 9 9 9 Clientes Java Stand-alone 9 4.1 Suporte a SSL (JSSE) 4.1.1 Configurando o JSSE em JVMs 1.3 4.1.2 Reconhecendo o Protocolo HTTPS 4.2 Certificados Digitais 4.2.1 Certificados e o Utilitário "keytool" 4.3 Autenticação 4.4 Possíveis Erros 9 10 10 10 11 13 14 Clientes J2EE 15 SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 3 de 18 5.1.1 JBoss 3.2.x 5.1.2 WebSphere 5.x 6. 7. 15 16 Clientes .NET 17 6.1 6.2 6.3 17 17 18 Importando os certificados Importando o WSDL Observações adicionais Observações Finais 18 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. 1.2 Atores 1.3 Aplicativo da IF. 1.4 Pré-condições Não há. 1.5 Fluxo de Eventos 1.6 Fluxo Básico (P01) Este caso de uso começa quando o aplicativo de uma determinada IF efetua uma consulta ao SCR de um determinado cliente no SFN para uma 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 formatados adequadamente [RN02] [E01] [E05] [E06] [E07] (P02.3) Verifica se a IF está habilitada a efetuar a consulta[RN03] [E02] (P02.4) Verifica se a data-base indicada está disponível para consulta [RN04] [RN09] [E03] [E08] (P02.5) Monta a estrutura de dados de retorno.[RN05] [RN06] [E04] (P02.6) Atualiza o log de consulta a clientes[RN07] (P03) O sistema efetiva o registro para fins de Tarifação [RN08] [Include: UC09 – Registro de Serviço SCR - Sistema de Informações de Crédito Versão: 1.2 Manual de Utilização do Web Services Data: 19/11/2004 841066416 Página 4 de 18 para fins de Tarifação] (P04) O caso de uso termina quando conclui o processo de consulta. 1.7 Fluxos Alternativos Não identificados. 1.8 Exceções (E01) Tipo de Cliente Inválido Caso o tipo de cliente seja inválido, o sistema deverá enviar a seguinte mensagem : ' 57 - Tipo de Cliente informado inválido: tipo_cliente'. (E02) IF não habilitada para Consulta Se a IF não estiver habilitada para a consulta, o sistema deverá enviar a seguinte mensagem : '52 Data-base indisponível para a Instituição Financeira'. (E03) Data-Base Indisponível para Consulta Caso a Data-base não esteja disponivel para a IF o sistema enviará a seguinte mensagem: ’52 Data-base indisponível para a Instituição Financeira’. (E04) O Cliente não possui dados no SCR Caso o cliente consultado não possua operação no SFN na data-base solicitada o sistema deverá enviar a seguinte mensagem: ’50 - Cliente não possui dados na data-base consultada’. (E05) Campo data-base não formatado corretamente Caso o campo data-base não esteja formatado corretamente, não podendo ser interpretado como mês e ano válidos, o sistema irá enviar a mensagem: ' 54 - Data-base não formatada (AAAA-MM) ou não é válida’. (E06) Campo código do cliente inválido Se o código informado não estiver adequado ao tipo de cliente, o sistema deve enviar uma das seguintes mensagens: ’55 - CPF inválido: código_cliente’ ou ’56 - CNPJ inválido: código_cliente’. (E07) Campos requeridos não informados Se um dos campos requeridos não for informado, o sistema deverá enviar as seguintes mensagens, respectivamente: ’60 - Data-base não informada: campo obrigatório’, ’58 - Código do cliente não informado: campo obrigatório’, ’59 - Tipo do cliente não informado: campo obrigatório’. (E08) Data-Base Consultada fora do período Caso a database consultada esteja fora do período permitido, o sistema deverá enviar a seguinte mensagem: ’51 – Data-base indisponível para consulta’. SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 5 de 18 1.9 Pós-condições 1.10 De acordo com o tipo de arquivo gerado: 1.10.1 Informações solicitadas retornadas ao aplicativo da IF 1.10.2 Log de Consulta de Clientes atualizado 1.10.3 Informações para cobrança registradas 2. Regras de Negócio Específicas 2.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') 2.2 (RN02) Critérios para os campos informados pela IF 2.2.1 Campo Tipo de Cliente O campo Tipo de Cliente 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. [E01] 2.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 : [E06] a. Tipo de Cliente = 1 (Pessoa Física) : Código do Cliente de 11 dígitos (CPF) b. Tipo de Cliente = 2 (Pessoa Jurídica) : Código do Cliente de 8 dígitos (CNPJ) 2.2.3 Campo Data-base O campo Data-base deverá estar no formato ano/mês ('AAAA-MM'). [E05] 2.2.4 Tratamento para os campos não informados Os campos que devem ser obrigatoriamente informados para realização do serviço são: Data-base, Código do Cliente, Tipo do Cliente. [E07] SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 6 de 18 2.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'. 2.4 (RN04) Critério para verificar se a data-base está disponível para consulta A data-base requisitada deverá estar dentro do período parametrizado para consulta, que corresponde atualmente as 14 datas-base anteriores ao mês corrente. Por exemplo: considerando que o mês corrente seja Julho/2004, o período parametrizado será de Maio/2003 a Junho/2004 (14 datas-base). 2.5 (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á processada (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 à moeda estrangeira. Somente serão informados códigos de vencimento cujos valores sejam maiores que zero. As modalidades a serem consideradas são as descritas no “Anexo 3: Modalidade de Operação – Mod” do leiaute. A vinculação à moeda estrangeira a ser considerada é a descrita no “Anexo 18: Vinculação à Moeda Estrangeira – VincME” do leiaute. O campo Vinculação à Moeda Estrangeira por não ser informado no Doc3020 deverá ter seu conteúdo deduzido do campo Variação Cambial (“Anexo 6: Variação Cambial – VarCamb”) constante daquele documento. 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 “Anexo 1: Código de Vencimento - SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 7 de 18 CodVenc”. Os campos referentes à operação sub judice somente serão listados caso o cliente possua operações que estejam nessa situação. 2.6 (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. 2.7 (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) 2.8 (RN08) Registro de informações para Tarifação Caso a consulta resulte em erro e não tenha sido enviada nenhuma informação, não haverá registro para cobrança. No entanto, se a consulta não incorrer em erro e o cliente não possuir operação a ser informado (RN06 e RN07) o registro para cobrança será efetuado. 2.9 (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”. 3. Utilizando Web Services 3.1 O documento WSDL Todo web service é descrito por um documento WSDL (Web Service Definition Language). Este documento descreve todos 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 Bacen 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, caberá SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 8 de 18 à IDE 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. 3.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/ 3.2 Acesso ao Web Service 3.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 3.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 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. "6Clientes .NET"). Para clientes Java/J2EE (v. "4Clientes 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). 4. Clientes Java Stand-alone Aplicações Java stand-alone podem decerto utilizar web services. Em teoria, qualquer aplicação que seja capaz de produzir um request HTTP poderia ser capaz de utilizar 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. 4.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 SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 9 de 18 produto para certificar-se de 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. 4.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()); É 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. 4.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"); 4.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: SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 10 de 18 Figura 1 - Certificado inválido Pressionando-se o botão ‘Exibir certificado’ será exibida uma descrição mais detalhada do problema: 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 reconhecer 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. 4.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 1 Os certificados do SERPRO também podem ser baixados e instalados diretamente do site https://thor.serpro.gov.br/ACSERPROSPB. SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 11 de 18 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"): Figura 3 - Caminho de certificação 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 841066416 Versão: 1.2 Data: 19/11/2004 Página 12 de 18 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 que efetivamente estará sendo utilizada. Figura 5 - Importando certificados para a JVM 4.3 Autenticação Web services também podem demandar autenticação de seus usuários. Neste caso, como o cliente SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 13 de 18 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. 4.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 841066416 Versão: 1.2 Data: 19/11/2004 Página 14 de 18 5. Clientes J2EE O caso de uso mais comum para um web service do Bacen 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. 5.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 841066416 Versão: 1.2 Data: 19/11/2004 Página 15 de 18 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"). 5.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 841066416 Versão: 1.2 Data: 19/11/2004 Página 16 de 18 6. Clientes .NET 6.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". 6.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 841066416 Versão: 1.2 Data: 19/11/2004 Página 17 de 18 6.3 Observações adicionais Embora a documentação fornecida dos web services implementados pelo Bacen tenha tipicamente a sintaxe Java, trata-se apenas de exemplos que ilustram o uso. 7. Observações Finais O uso de web services é ainda experimental. O Bacen conta com a ajuda das IFs envolvidas no processo para que se alcance um resultado satisfatório. O Bacen 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 Cláudio Ferreira (61-414-3640); André Carvalho (61-414-3537). SCR - Sistema de Informações de Crédito Manual de Utilização do Web Services 841066416 Versão: 1.2 Data: 19/11/2004 Página 18 de 18