Histórico da Página
01. DADOS GERAIS
Produto: | TOTVS Saúde Planos
| ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Linha de Produto: | | ||||||||||||||||
Segmento: | Saude | ||||||||||||||||
Módulo: | PLANO DE SAUDE SIGAPLS | ||||||||||||||||
Função: | Não se aplica | ||||||||||||||||
Ticket: | 7361972 | ||||||||||||||||
Requisito/Story/Issue (informe o requisito relacionado) : | DSAUBE-10407 |
02. SITUAÇÃO/REQUISITO
Implementada melhoria que permite o processo de validação do Token Unimed, conforme Manual de Padronização do Cartão do Beneficiário MS.003 - REV.12 Versão 6.0a.Cartão virtual gerado por aplicativo.
O Token é uma senha numérica de 6 a 8 dígitos que deve ser gerada no por Aplicativo Unimed, que é informada pelo beneficiário no momento do atendimento e validada pelo sistema de Gestão ( PLS ), servindo como um segundo fator de autenticação, assegurando que quem está sendo atendido é mesmo o beneficiário portador da carteirinha informada.
03. SOLUÇÃO
Para que a validação seja possível, tanto o Aplicativo quanto o PLS devem ser capazes de gerar um mesmo Token para um mesmo usuário em um mesmo intervalo de tempo. Para isso, é necessário o compartilhamento, entre Aplicativo e PLS, de uma Chave (Seed) e alguns "parâmetros de alinhamento" para geração desse Token. Nesta implementação, esse compartilhamento é feito no momento do login.
04. DEMAIS INFORMAÇÕES
Criação de campo e do valid de alguns existentes.
...
O processo completo de Geração e Validação do Token Unimed , pode ser visualizado a seguir.
Dessa forma, esta implementação abrange as seguintes funções e processos:
...
PLSTKSEEDG(cMatric, lAtualiza)
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
cMatric | caractere | Matrícula do Beneficiário | x |
lAtualiza | booleano | Atualiza BA1_TKSEED | x |
...
Parâmetros de Sistema envolvidos
X6_VAR | X6_TIPO | X6_DESCRIC | X6_DESCRIC 1 | X6_CONTEUD |
---|---|---|---|---|
MV_PLSTKST | N | Tipo de Seed Gerado | 1=Text;2=Base64;3=Hex | 1 |
MV_PLSTKSH | N | Define o tamanho do Seed gerado. | 3=SHA1;5=SHA256;7=SHA512 | 5 |
Pontos de Entrada
PTKSEEDG
Descrição: Retorna Seed customizado para ser utilizado na Geração do Token Unimed. O mesmo é gravado no registro do usuário (BA1_TKSEED):
Parâmetros:
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
cMatric | caractere | Matrícula do Beneficiário | x |
2 - Inclusão, no método de criação e login de usuário da api de integração PLS x Aplicativo, de parâmetros de alinhamento para gereção do Token. São eles: Seed, Tipo do Seed, Tipo do Algoritmo a ser utilizado na geração do Token, Número de Digitos do Token e Intervalo de validade do Token em segundos (30min = 1800seg, conforme Manual):
...
Parâmetros de Sistema envolvidos
X6_VAR | X6_TIPO | X6_DESCRIC | X6_DESCRIC 1 | X6_CONTEUD |
---|---|---|---|---|
MV_PLSTKST | N | Tipo de Seed Gerado | 1=Text;2=Base64;3=Hex | 1 |
MV_PLSTKSH | N | Define o tamanho do Seed gerado. | 3=SHA1;5=SHA256;7=SHA512 | 5 |
MV_PLSTKDG | N | Número Dígitos Token | 6, 7 ou 8 | 6 |
MV_PLSTKTS | N | Token Time Step | Valor de tempo em segundos | 1800 |
Importante!!!
APIs customizadas para integração com APP
...
3 - Funções de Geração e Validação do Token utilizando algoritmo TOTP (RFC6238 - https://tools.ietf.org/html/rfc6238 ), seguindo a recomendação do Comitê Estratégico de Tecnologia da Informação da Unimed. Essas funções são responsáveis por gerar, no PLS, o mesmo Token do Aplicativo para um determinado intervalo de tempo, de acordo com os parâmetros de alinhamento, e compará-lo com o Token informado no atendimento:
...
PLSTOTPGEN(cK, nX, hashType, nKType, nXType, nDigits, cTTest)
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
cK | caractere | Seed | x |
nX | integer | Time Step | x |
hashType | integer | Função hash utilizada: (3=SHA-1; 5=SHA-256; 7=SHA-512) | x |
nKType | integer | Tipo do Seed: (1=Text; 2=Base64; 3=Hex) | x |
nXType | integer | Tipo do Input: (1=Text; 2=Base64; 3=Hex) | x |
nDigits | integer | Número de Dígitos | x |
cTTest | caractere | Input específico que pode ser utilizado para gerar o TOTP para um intervalo de tempo (timestamp) específico | x |
...
PLSTOKGENE(cMatric)
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
cMatric | caractere | Matrícula do Beneficiário | x |
Retorno
aRet[1] boolean Status de Retorno da Função
...
PLSUTOKVLD(cMatric, cToken)
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
cMatric | caractere | Matrícula do Beneficiário | x |
cToken | caractere | Token a ser validado | x |
...
- Seed Gerado para o Beneficiário 00010001000002006 = xOS8KQ9WPsTU23PjPbJD em formato texto, no momento do login;
- Utilizar site https://emn178.github.io/online-tools/base32_encode.html para transformar text em Base32. Resultado: PBHVGOCLKE4VOUDTKRKTEM2QNJIGESSE
3. Utilizar Base32 como input do site https://totp.danhersam.com/ para geração do Token TOTP. Resultado: 298014
4. Verificar durante atendimento que Token gerado no sistema é o mesmo que o gerado pelo site de verificação:
4 - Inclusão de novo Motivo de Críticas do Sistema específico para a validação do Token;
Para funcionamento correto da melhoria, a seguinte Crítica de Sistema deve ser cadastrada:
Proprietário: | Código Glosa: | Descrição: | Tipo: | Ativa?: | Justif.Obr.: | Analisar: | Glosa TISS: | Desc. Glosa: |
---|---|---|---|---|---|---|---|---|
BCT_PROPRI = 5 | BCT_CODGLO = 87 | BCT_DESCRI = Token Inválido | BCT_TIPO = 1 | BCT_ATIVA = 1 | BCT_RESOBR = 0 | BCT_LOCANA = 1 | BCT_GLTISS = 1011 | BCT_DESTIS = IDENTIFICACAO DO BENEFICIARIO NAO CONSISTENTE |
Obs.: Nova glosa disponível no arquivo bct-motivo_de_criticas.csv, para carregamento automático.
...
Caso não seja válido, o sistema exibirá críticas.
Caso o parâmetro MV_PLSCABC esteja ativado, o sistema permitirá a continuação do Atendiemento com status não autorizado e gravará as críticas. Caso contrário, o atendimento não poderá ser concluído.
...
Caso não seja válido, o sistema exibirá críticas.
Caso o parâmetro MV_PLSCABC esteja ativado, o sistema permitirá a continuação do Atendiemento com status não autorizado e gravará as críticas. Caso contrário, o atendimento não poderá ser concluído.
...
<respostaPedidoAutorizacaoWS xmlns="http://ptu.unimed.coop.br/schemas/V80_00">
...
</ans:servicoAutorizado>
No sistema:
X6_VAR | X6_TIPO | X6_DESCRIC | X6_DESCRIC 1 | X6_CONTEUD |
---|---|---|---|---|
MV_PLSTKST | N | Tipo de Seed Gerado | 1=Text;2=Base64;3=Hex | 1 |
MV_PLSTKSH | N | Define o tamanho do Seed gerado. | 3=SHA1;5=SHA256;7=SHA512 | 5 |
MV_PLSTKDG | N | Número Dígitos Token | 6, 7 ou 8 | 6 |
MV_PLSTKTS | N | Token Time Step | Valor de tempo em segundos | 1800 |
Importante!!
Para funcionamento correto, deve-se, também, atualizar o binário do appserver com o disponibilizado no link a seguir: https://arquivos.totvs.com.br/TrocaArquivos/download.aspx?id=41096&key=YDZo8OTNECxr7Wy0rn9STo3hNWMPEMLPKy_UCQxHp3g1a versão 7.00.191205P-20201210
05. ASSUNTOS RELACIONADOS
<Não se aplica>
Templatedocumentos |
---|
...