Histórico da Página
Protocolo de Transações Unimed - PTU
O sistema Foundation Saúde, esta em conformidade com o Protocolo de Transações Unimed on-line (PTU) versão 6.0 e oferece suporte a comunicação por meio de WebServices com segurança (certificado digital), exigidos pela Unimed do Brasil.
Configurações
Para a configuração dos Web Services externos (serviços disponibilizados pela Unimed Brasil), é utilizado o arquivo foundation-exchange.properties. Neste arquivo, será configurando o namespace e a URL do serviço da Unimed do Brasil, para cada tipo de mensagem. Este arquivo deve ser gravado obrigatoriamente no diretório jboss-4.2.3.GA/server/default/conf
Nesse arquivo é necessário configurar a seguinte propriedade:
- Propriedade: providerCode
- Descrição: Código da Unimed onde o Foundation se encontra instalado. Ex: 0032
Mensagens Contempladas
Serviços suportados pelo Foundation Saúde para receber requisições.
| Transação - PTU 6.0 | WebService |
|---|---|
| Autorização de Ordem de Serviço | PtuServiceOrderAuthorizationWSv6000 |
| Consulta de Dados do Beneficiário | PtuInsuranceUserQueryWSv6000 |
| Cancelamento | PtuCancellationWSv6000 |
| Resposta de Auditoria | PtuAuditoryWSv6000 |
| Status da Transação | PtuTransactionStatusWSv6000 |
| Pedido de Complemento de Autorização | PtuAuthorizationComplementWSv6000 |
| Consulta transações Respondidas pelo WSD | PtuConsultA1100WSv6000 |
| Pedido de Insistência | PtuInsistenceWSv6000 |
| Pedido de Autorização | PtuAuthorizationWSv6000 |
| Consulta de Prestadores | PtuProviderQueryWSv6000 |
| Requisição de Contagem de Beneficiários | PtuActiveInsuranceUsersQueryWSv6000 |
| Comunicação de Decurso de Prazo | PtuCommunicationProcessTermWSv6000 |
| Ordem de Serviço | PtuServiceOrderWSv6000 |
Configuração dos WebServices
Para a configuração dos Web Services externos (serviços disponibilizados pela Unimed Brasil), é utilizado o arquivo foundation-exchange.properties. Neste arquivo, será configurando o namespace e a URL do serviço da Unimed do Brasil, para cada tipo de mensagem.
Este arquivo deve ser gravado obrigatoriamente no diretório jboss-4.2.3.GA/server/default/conf
O formato para configuração do "namespace", exemplo:
com.totvs.foundation.exchange.connector.ptu.implementation.v01.DefaultExternalConnector.RespostaAuditoria.namespace.URI = http://ptu.unimed.com.br/respostaauditoria/webservices/V3_01_35.
O formato para configuração da "URL" do "Web Service Externo", exemplo:
com.totvs.foundation.exchange.connector.ptu.implementation.v01.DefaultExternalConnector.OrdemServico.WSDL = https://wsd.homologacao.unimed.com.br/wsdintercambio/intercambioservices/ptu_v3_01_35/RespostaAuditoria?wsdl
Em ambos os casos, a alteração é exclusiva a coluna da direita, sendo que a coluna a esquerda permanece inalterada.
7.4 Envio de Mensagem por WebService
O envio de mensagens de serviço é feito por meio de "Web Services" com certificado de segurança. Os serviços disponíveis e a estrutura da mensagem são obtidos por intermédio do endereço: “http://<host-name>[:port]/jbossws/services”.
Todos "Web Services" relativos aos serviços "PTU", estão sob o contexto “htz-foundation”.
Exemplo:
- Nome do Servidor: server01
- Porta: 28080
Endereço: “http://localhost/jbossws/services”
- A tabela abaixo exemplifica como ficam os caminhos para os "WebServices" seguindo este exemplo:
Observação: A Unimed Brasil somente realiza comunicação com "WebServices", publicados na porta 80 e 443 com certificado digital.
7.5 Certificado Digital
A seguir são apresentados os passos para criação e distribuição do Certificado Digital de segurança para os "WebServices". Será usada a ferramenta "Keytool", distribuída junto com a instalação "Java JDK".
Observação: A criação do certificado digital deve ser feita apenas para o uso dos módulos "TISS". Para o uso do módulo "PTU", o certificado deve ser solicitado a Unimed do Brasil.
7.5.1 Criação do Contenedor de Certificados (Keystore)
Utilizando o "Keytool", digite a seguinte linha de comando (cmd):
keytool -genkeypair -alias keystore -dname "<distinguished-name>" -keypass
medical -keystore c:/totvs/jboss4.2.3.GA/server/default/conf/server.keystore -storepass medical -validity 365
Os valores grifados devem ser substituidos:
- distinguished-name: De preferência em conformidade com a estrutura suportada pelo Keytool([1]). Para operadoras deve-se usar o nome da máquina hospedeira (host) no campo CN (Common Name), é o mesmo host utilizado na configuração do parâmetro “-b” para a publicação do sistema para acessos externos conforme o capítulo 5.1.
Segue abaixo um exemplo:
CN = foundation.dominio_operadora.com.br
OU = Totvs Saúde
O = Totvs
L = Joinville
S = SC
C = BR
Estes atributos formam a seguinte "string" para preenchimento do valor: “CN=foundation.dominio_operadora.com.br, OU=Totvs Saude,O=Totvs, L=Joinville, ST=SC, C=BR”.
Nota: Lembre-se de usar aspas na linha de comando para strings com espaços.
- -keypass: Senha para a chave do certificado digital. O valor padrão é medical.
- -keystore: Caminho ou diretório onde serão criados o certificado, o arquivo contenedor de certificados, e o arquivo contenedor dos certicados válidos de clientes. O valor padrão é “c:\totvs\jboss-4.2.3.GA”.
- -storepass: Senha para o arquivo contenedor de certificados. O valor padrão é medical.
- -validity: Número de dias antes que o certificado se expire. O valor padrão é 365(1 ano);
Atenção: Verifique se o arquivo “server.keystore” foi criado no diretório escolhido (-keystore).
Exemplo de criação do keystore server e client:
>keytool -genkeypair -alias keystore -dname "CN=LOCALHOST, OU=Totvs Saude,O=Totvs, L=Joinville, ST=SC, C=BR" -keypass medical -keystore "client.keystore" -storepass medical -validity 365
>keytool -genkeypair -alias keystore -dname "CN=LOCALHOST, OU=Totvs Saude,O=Totvs, L=Joinville, ST=SC, C=BR" -keypass medical -keystore "server.keystore" -storepass medical -validity 365
7.5.2 Criação do Certificado
Para extrair o certificado do contenedor digite a seguinte linha de comando (cmd) :
keytool -exportcert -alias keystore -file c:/totvs/jboss-4.2.3.GA/server/default/conf/certificate.cer
-keystore c:/totvs/jboss-4.2.3.GA/server/default/conf/keystore.keystore -storepass medical
Segue abaixo detalhes de cada propriedade:
- -alias: Crie um alias para seu arquivo de chaves, esse nome será usado internamente. Valor padrão é “keystore”.
- -file: Caminho ou diretório onde serão criados o certificado, o arquivo contenedor de certificados, e o arquivo contenedor dos certicados válidos de clientes. O valor padrão é “c:/totvs/jboss-4.2.3.GA/server/default/conf/”.
- -storepass: Senha para o arquivo contenedor de certificados. O valor padrão é “medical”.
Atenção: Verifique se o arquivo “certificate.cer” foi criado no diretório escolhido (-file).
Exemplo de criação dos certificados:
>keytool -exportcert -alias keystore -file "c:/totvs/jboss-4.2.3.GA/server/default/conf/client.cer" -keystore "client.keystore" -storepass medical
>keytool -exportcert -alias keystore -file " c:/totvs/jboss-4.2.3.GA/server/default/conf /server.cer" -keystore "server.keystore" -storepass medical
7.5.3 Importação dos Certificados
Cada cliente autorizado a receber ou enviar mensagens "Web Service" deve fornecer seu arquivo de certificado pra ser adicionado à lista de clientes confiáveis.
Também o cliente precisa receber o certificado do provedor(host) dos serviços "Web Service" para adicioná-lo a sua lista de confiabilidade.
Tendo recebido o arquivo do cliente, executar a seguinte linha de comando (cmd):
keytool -importcert -alias client_truststore -file “<certificado-cliente > -keypass “<senha-cliente>” -keystore “c:/totvs/jboss-4.2.3.GA/server/default/conf/truststore.truststore”
-storepass medical -noprompt -trustcacerts
Os valores grifados devem ser substituídos, e para palavras-chave iguais devem ser os mesmos usados anteriormente (§ 3.5.1, § 3.5.2):
- -alias: Crie um alias para seu arquivo de armazenamento de certificados de clientes válidos, esse nome será usado internamente. O valor padrão é “client_truststore”.
- client-certificate: Caminho completo onde se encontra o arquivo certificado do cliente, este certificado será adicionado à lista de confiáveis;
- senha-cliente: Senha do arquivo de certificado do cliente.
- -keystore: Caminho ou diretório onde serão criados o certificado, o arquivo contenedor de certificados, e o arquivo contenedor dos certicados válidos de clientes. Valor padrão é “c:/totvs/jboss-4.2.3.GA/server/default/conf”.
- -storepass: Senha para o arquivo contenedor dos certificados válidos de clientes. Valor padrão é “medical”.
Atenção: Verifique se o arquivo ”truststore.truststore” foi criado no diretório escolhido (-storepass).
Exemplo de importação dos certificados
Importando certificado do cliente no servidor
keytool -importcert -alias clientlocal -file "client.cer" -keypass medical -keystore "server.truststore" -storepass medical -noprompt –trustcacerts
Importando certificado do servidor no cliente
keytool -importcert -alias server -file "server.cer" -keypass medical -keystore "client.truststore" -storepass medical -noprompt –trustcacerts
O proximo passo é copiar os arquivos “server.keystore” e “server.truststore”, para o diretório ”C:/totvs/jboss-4.2.3.GA/server/default/conf”.
7.6 Configuração de Segurança no Servidor de Aplicações
A seguir são mostrados os passos para habilitar, ou desabilitar, o uso do certificado digital. Por padrão algumas configurações estão comentadas para os clientes que utilizarem somente os módulos "TISS" e "SIB" sem o certificado digital. Caso o cliente utilize os módulos "SIB" e "TISS" sem certificado, será necessário fazer as configurações da seção 8.6.2.
7.6.1 Habilitar Certificado Digital - PTU/Tiss/SIB
Na estrutura ”C:/totvs/jboss-4.2.3.GA/server/default/conf”, a partir do diretório de instalação do "JBOSS", é preciso verificar a configuração de dois arquivos:
Observação: Para configurar o certificado para o módulo do "PTU", deve copiar os arquivos enviados pela Unimed do Brasil para o diretório “c:\totvs\jboss-4.2.3.GA\server\default\conf”. O nome do arquivo que vai ser configurado é igual ao domínio que é informado no parâmetro “-b”, no arquivo de inicialização do "JBOOS", conforme a seção 6 - Inicialização e Acesso.Ex.: foundation.dominio_operadora.com.br.javaks
- Arquivo “jboss-service.xml”: incluir ou atualizar a tag “mbean” de segurança, conforme mostrado abaixo. Para o módulo "PTU", o valor “keystore.keystore” e o valor “truststore. truststore”, na linha em negrito abaixo, deve ser substituída pelo arquivo “.javaks” enviado pela Unimed do Brasil e as senhas “medical” dos atributos “KeyStorePass” e “TrustStorePass” pela senha fornecida pela Unimed do Brasil.
- Arquivo “jboss-service.xml”: incluir ou atualizar a tag “mbean” de segurança, conforme mostrado abaixo. Para o módulo "PTU", o valor “keystore.keystore” e o valor “truststore. truststore”, na linha em negrito abaixo, deve ser substituída pelo arquivo “.javaks” enviado pela Unimed do Brasil e as senhas “medical” dos atributos “KeyStorePass” e “TrustStorePass” pela senha fornecida pela Unimed do Brasil.
<!-- ... -->
<mbean code="org.jboss.security.plugins.JaasSecurityDomain" name="jboss.web:service=SecurityDomain"> <constructor> <arg type="java.lang.String" value="JBossWS-SSL"/> </constructor> <attribute name="KeyStoreURL"> ${jboss.server.home.dir}/conf/keystore.keystore </attribute> <attribute name="KeyStorePass">medical</attribute> <attribute name="TrustStoreURL"> ${jboss.server.home.dir}/conf/truststore.truststore </attribute> <attribute name="TrustStorePass">medical</attribute> <depends>jboss.security:service=JaasSecurityManager</depends> </mbean>
<!-- ... -->
|
Observação: Para a DISTRO com certificado, este arquivo já se encontra configurado.
Arquivo “login-config.xml”: incluir ou atualizar a tag “application-police”, conforme mostrado abaixo:
<!-- ... -->
<application-policy name="JBossWS-Secure">
<authentication>
<login-module code="org.jboss.security.auth.spi.BaseCertLoginModule"
flag="required">
<module-option name="password-stacking">useFirstPass</module-option>
<module-option name="securityDomain">java:/jaas/JBossWS-SSL</module-option>
<module-option name="verifier">
org.jboss.security.auth.certs.AnyCertVerifier
</module-option>
</login-module>
</authentication>
</application-policy>
<!-- ... -->
Observação: Para a DISTRO com certificado, este arquivo já se encontra configurado na estrutura “C:/totvs/jboss-4.2.3.GA/server/default/deploy”, verificar, incluir, ou atualizar o arquivo “properties-service.xml”, conforme mostrado abaixo:
<server>
<!-- ... -->
<mbean code="org.jboss.varia.property.SystemPropertiesService"
name="jboss:type=Service,name=SystemProperties">
<!-- ... -->
<attribute name="Properties">
javax.net.ssl.keyStore=<caminho-keystore>(*)
javax.net.ssl.keyStorePassword=<senha-keystore>(**)
javax.net.ssl.trustStore=<caminho-truststore>(***)
javax.net.ssl.trustStorePassword=<senha-truststore>(****)
</attribute>
<!-- ... -->
</mbean>
<!-- ... -->
</server>
(*) – Informe o caminho onde está o seu arquivo "keystore", que foi criado em “§ 3.7.1. Criação do contenedor de certificados(keystore)”. Caso o arquivo esteja configurado para o módulo do "PTU", este valor deve apontar para o arquivo “.javaks”, enviado pela Unimed do Brasil.
(**) – Informe a senha do seu "keystore". Caso o arquivo esteja configurado para o módulo do "PTU", este valor deve ser preenchido com a senha fornecida pela Unimed do Brasil.
(***) – Informar o caminho onde está seu arquivo "truststore", que foi criado em “§ 3.5.3. Importação de Certificados”. Caso o arquivo esteja configurado para o módulo do "PTU", este valor deve apontar para o arquivo “.javaks”, enviado pela Unimed do Brasil.
(****) – Informar a senha do seu arquivo "truststore", que foi criado em “§ 3.5.3. Importação de Certificados”. Caso o arquivo esteja configurado para o módulo do "PTU", este valor deve ser preenchido com a senha fornecida pela Unimed do Brasil.
Obs: Para a DISTRO com certificado, este arquivo já se encontra configurado.
Na estrutura “C:/totvs/jboss-4.2.3.GA/server/default/deploy/jboss-web-deployer”, a partir do diretório de instalação, verificar, incluir, ou atualizar o arquivo “server.xml”, para o serviço “jboss.web”, conforme mostrado abaixo:
<Server>
<!-- ... -->
<Service name="jboss.web">
<!-- ... -->
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="C:/totvs/jboss-4.2.3.GA/server/conf/keystore.keystore"
keystorePass="medical"
clientAuth="want" sslProtocol="TLS"
truststoreFile="C:/totvs/jboss-4.2.3.GA/server/conf/truststore.truststore"
truststorePass="medical"/>
<!-- ... -->
</Service>
<!-- ... -->
</Server>
Segue abaixo mais detalhes referente a configuração acima:
- port=”...”: Número da porta para comunicação segura. Valor padrão é 443.
- keystoreFile=”...”: Caminho ou diretório onde está o certificado, o arquivo contenedor de certificados, e o arquivo contenedor dos certificados válidos de clientes. Diretório padrão de certificado é o “C:/totvs/jboss-4.2.3.GA/server/conf”. Caso o arquivo esteja configurado para o módulo do "PTU", deve apontar para o arquivo “.javaks”, fornecido pela Unimed do Brasil.
- keystorePass=”...”: Senha para o arquivo contenedor de certificados. Caso o arquivo esteja configurado para o módulo do "PTU", este valor deve ser preenchido com a senha fornecida pela Unimed do Brasil.
- senha-truststore=”...”: Senha para o arquivo contenedor dos certificados válidos de clientes. Caso o arquivo esteja configurado para o módulo do "PTU", este valor deverá ser preenchido com a senha fornecida pela Unimed do Brasil.
Observação: Para a DISTRO com certificado, este arquivo já se encontra configurado.
Nota: A necessidade de configurar portas ocorre principalmente quando há duas instâncias ativas do "JBOSS". Outras situações referentes à infra-estrutura local podem ocasionar essa necessidade e devem ser verificadas com o técnico responsável.7.6.2 Desabilitar Certificado Digital - SIB/Tiss
Na estrutura ”/server/default/conf”, a partir do diretório de instalação do "JBOSS AS," é preciso verificar a configuração de alguns arquivos:
Arquivo “jboss-service.xml”: comentar a tag “mbean” de segurança, conforme mostrado abaixo:
<!-- ... -->
<!--
<mbean code="org.jboss.security.plugins.JaasSecurityDomain"
name="jboss.web:service=SecurityDomain">
<constructor>
<arg type="java.lang.String" value="JBossWS-SSL"/>
</constructor>
<attribute name="KeyStoreURL">
${jboss.server.home.dir}/conf/keystore.keystore
</attribute>
<attribute name="KeyStorePass"><senha-keystore></attribute>
<attribute name="TrustStoreURL">
${jboss.server.home.dir}/conf/truststore.truststore
</attribute>
<attribute name="TrustStorePass"><senha-truststore></attribute>
<depends>jboss.security:service=JaasSecurityManager</depends>
</mbean>
-->
<!-- ... -->
- Arquivo “login-config.xml”: comentar a tag “application-police”, conforme mostrado abaixo:
<!-- ... -->
<!--
<application-policy name="JBossWS-Secure">
<authentication>
<login-module code="org.jboss.security.auth.spi.BaseCertLoginModule"
flag="required">
<module-option name="password-stacking">useFirstPass</module-option>
<module-option name="securityDomain">java:/jaas/JBossWS-SSL</module-option>
<module-option name="verifier">
org.jboss.security.auth.certs.AnyCertVerifier
</module-option>
</login-module>
</authentication>
</application-policy>
-->
<!-- ... -->
Na estrutura “/server/default/deploy”, a partir do diretório de instalação, verificar, comentar o arquivo “properties-service.xml”, conforme mostrado abaixo:
<server> <!-- ... --> <mbean code="org.jboss.varia.property.SystemPropertiesService" name="jboss:type=Service,name=SystemProperties"> <!-- ... --> <attribute name="Properties"> <!-- javax.net.ssl.trustStore=<caminho-truststore> --> </attribute> <!-- ... --> </mbean> <!-- ... --> </server> |
Na estrutura “server/default/deploy/jboss-web-deployer”, a partir do diretório de instalação, verificar, comentar o arquivo “server.xml” para o serviço “jboss.web”, conforme mostrado abaixo:
<Server> <!-- ... --> <Service name="jboss.web"> <!-- <Connector port="<porta-ssl>" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" keystoreFile="<caminho>/keystore.keystore" keystorePass="<senha-keystore>" clientAuth="want" sslProtocol="TLS" truststoreFile="<caminho>/truststore.truststore" truststorePass="<senha-truststore>"/> --> </Service> </Server> |
Na estrutura “/server/default/deploy/jbossws.sar/jbossws.beans/META-INF”, a partir do diretório de instalação, verificar, comentar o arquivo “jboss-beans.xml”, referente a seguranças de portas, conforme mostrado abaixo:
<deployment ... > <!-- ... --> <bean name="WSServerConfig" class="org.jboss.wsf.stack.jbws.NativeServerConfig"> <!-- <property name="webServiceSecurePort"><porta-ssl></property> --> </bean> <!-- ... --> <deployment> |