Token TOTP - Cartão Virtual
- 1 1. Visão Geral
- 2 2. Problema de Negócio
- 3 3. Objetivo da Solução
- 4 4. Fluxo de Uso (Jornada)
- 5 Fluxo Simplificado
- 6 5. Arquitetura de Funcionamento
- 7 6. Parâmetros de Configuração
- 8 7. SEED (Identificador do Beneficiário)
- 9 8. Conversão do SEED
- 10 9. Validação Externa
- 11 10. Fluxo de Geração do Token
- 11.1 7.1 Processo padrão
- 12 11. Requisitos de Integração
- 12.1 8.1 Mobile Saúde ↔ ERP
- 12.2 8.2 Regra crítica
- 13 11. Configuração no Mobile Saúde
- 13.1 11.1 Acesso
- 13.2 11.2 Parâmetros TOTP
- 13.3 11.3 SEED
- 13.4 11.4 Aplicação das mudanças
- 14 12. Configuração no ERP
- 15 12. Troubleshooting
- 16 13. Testes Recomendados
- 16.1 13.1 Funcionais
- 16.2 13.2 Integração
- 16.3 13.3 Edge cases
- 17 14. Riscos Identificados
- 18 15. Decisões Recomendadas
1. Visão Geral
A funcionalidade de Token TOTP (Time-Based One-Time Password) aplicada ao Cartão Virtual tem como objetivo mitigar o uso indevido de credenciais compartilhadas, especialmente em cenários onde há:
Empréstimo de carteirinha (física ou digital)
Uso de prints do cartão virtual
Falta de validação de identidade presencial
O TOTP adiciona uma camada de autenticação dinâmica, exigindo que o usuário gere um código temporário no momento do atendimento.
2. Problema de Negócio
2.1 Cenário anterior
Antes da implementação:
Usuários compartilhavam carteirinhas
Clínicas nem sempre validavam documento de identidade
Prints do cartão virtual eram facilmente reutilizados
⚠️ Risco crítico: acesso indevido a serviços de saúde em nome de terceiros.
2.2 Limitação do cartão virtual
Apesar de eliminar o cartão físico:
O cartão virtual pode ser capturado via print
O print pode ser compartilhado instantaneamente
⚠️ Problema persistente: o cartão virtual isoladamente não garante identidade do portador.
3. Objetivo da Solução
Implementar um mecanismo que:
Comprove que o usuário está autenticado no momento do uso
Reduza a viabilidade de compartilhamento de acesso
Não dependa exclusivamente de validação manual (documento físico)
Diminua a iniciativa de fraude (token traz uma sensação de vigilância, que pode inibir a fraude sob a perspectiva de quem está emprestando o cartão).
4. Fluxo de Uso (Jornada)
4.1 Processo no atendimento
Usuário abre o app e acessa o cartão virtual
O token TOTP é exibido (ou gerado sob demanda)
Profissional solicita o token
Usuário informa o código exibido
Operador digita o token no sistema do parceiro
Sistema parceiro valida o token
Fluxo Simplificado
[Início]
|
[Atendimento presencial inicial ou digital]
|
|-- Recepciona beneficáirio
|-- Inicia atendimento e informa dados do cartão (matrícula e outros dados)
|-- Solicita o token TOTP para usuário que está sendo atendido
|
[Beneficiário]
|
|-- Acessa a rotina de cartão virtual
|-- App calcula Token TOTP (offline) usando credenciais do cartão virtual
|-- Repassa o token gerado para o atendimento
|
[Atendimento presencial inicial ou digital]
|
|-- Insere o token fornecido
|-- Sistema de autorização calcula o Token TOTP para o usuário
|-- compara se o token calculado é o mesmo que o token informado
|
[Resultado]
|-- se tokens iguais = válido. Permite continuar a autorização.
|-- se tokens diferentes = inválido. Impede a autorização.
|
[Fim]4.2 Validação no sistema autorizador
Recebe token digitado
Recalcula o token com base nos mesmos parâmetros (configuração deve ser idêntica, tanto no Mosia Omnichannel quanto no sistema de autorização da sua operadora)
Compara:
if (token_informado == token_calculado)
autenticação válida
else
erro de autenticação
⚠️ Regra crítica: divergência resulta em negação de atendimento/autorização.
5. Arquitetura de Funcionamento
O modelo segue o padrão TOTP (RFC 6238), com as seguintes características:
Atualização periódica automática
Geração determinística baseada em parâmetros compartilhados
5.1 Princípio de funcionamento
O token é gerado de forma independente por:
Aplicativo Mobile Saúde (cliente)
Sistema do parceiro (ERP / autorizador)
Ambos utilizam:
Mesmo identificador (SEED)
Mesmos parâmetros (algoritmo, período, etc.)
Mesmo timestamp (sincronizado)
O token é gerado no próprio app da Mobile Saúde, a lógica é implementada de forma que não é consumida nenhuma API de terceiros e com isso a carteirinha podendo ser usada até mesmo em locais sem internet, todos os parametros devem ser configurados obrigatóriamente no Mosia Omnichannel para funcionar corretamente.
6. Parâmetros de Configuração
Acesse o configurador público do Mosia Omnichannel (como acessar);
Configurador de Funcionalidades > Serviços > Cartão Virtual;
Na aba parametros configure os seguintes parametros que são obrigatórios;
6.1 Parâmetros obrigatórios
Parâmetro | Descrição | Valores aceitos |
|---|---|---|
| Algoritmo de hash usado na geração do token |
|
| Quantidade de dígitos do código OTP |
|
| Intervalo de validade do token (segundos) | Ex: |
| Tipo de encoding do SEED |
|
6.2 Configuração recomendada (padrão recomendado, e em uso em diversos clientes)
Algoritmo: SHA256
Dígitos: 6
Período: 1800 segundos
Encoding: HEX
7. SEED (Identificador do Beneficiário)
7.1 Definição
O SEED é o identificador único do beneficiário utilizado como base para geração do TOTP.
O SEED está presente no objeto de login do beneficiário, e não é um parâmetro a ser configurado.
7.2 Recomendação de uso
Utilizar preferencialmente um dado que seja único por usuário. Lembre-se que um mesmo usuário pode ter mais de um número de cartão, portanto recomendamos fortemente o uso do número do cartão (carteirinha).
7.3 Regras de consistência
O SEED deve ser idêntico em todos os sistemas integrados
Não pode haver diferenças de encoding entre Mobile Saúde e ERP
8. Conversão do SEED
Antes da utilização no TOTP, o SEED deve seguir o fluxo:
8.1 Pipeline de conversão
String original (ex: matrícula)
Conversão para HEX
Conversão de HEX para BASE32
Uso do BASE32 no gerador TOTP externo (validação)
8.2 Observação importante
O sistema interno pode operar com
HEXFerramentas externas de validação frequentemente exigem
BASE32
9. Validação Externa
Aplicabilidade: durante a implementação, é frequente que os tokens gerados entre sistemas (Mobile Saúde x Sistema Autorizador) sejam diferentes. O motivo geralmente é diferença no fluxo de cálculo desse token.
Para facilitar o entendimento de “qual token está correto”, sugerimos o uso de um algoritmo de internet, formatado para calcular de forma independente os tokens com base em parâmetros informados no próprio site, sem exigir integração ou preparação prévia.
Recomendamos a seguinte ferramenta online:
6.1 Capacidade da ferramenta
Permite simular:
Algoritmo (SHA1 / SHA256 / SHA512)
Período
Número de dígitos
Seed em BASE32 (LEMBRAR DE USAR A CONVERSÃO DO SEED EXPOSTA NO PASSO 8).
10. Fluxo de Geração do Token
7.1 Processo padrão
Obter matrícula do beneficiário
Converter matrícula → HEX
Converter HEX → BASE32
Aplicar parâmetros:
SHA256
6 dígitos
1800 segundos
encoding HEX (interno)
Gerar TOTP
Validar consistência entre sistemas
11. Requisitos de Integração
8.1 Mobile Saúde ↔ ERP
Os sistemas devem manter:
Mesma configuração de algoritmo
Mesma configuração de período
Mesma quantidade de dígitos
Mesmo padrão de encoding
8.2 Regra crítica
Qualquer divergência entre Mobile Saúde e ERP resulta em falha de autenticação.
11. Configuração no Mobile Saúde
11.1 Acesso
Acessar painel de configuração de funcionalidades
Navegar até módulo: Cartão Virtual
11.2 Parâmetros TOTP
Configurar:
Algoritmo:
SHA256Dígitos:
6Período:
1800Encoding:
HEXToken habilitado:
true
11.3 SEED
Utilizar matrícula do beneficiário
Garantir consistência entre sistemas
Garantir que o atributo
seedtenha sido informado no payload do método de login do app (1.1 - Login )
11.4 Aplicação das mudanças
Após alteração:
Reiniciar serviços
Realizar logout/login no app sandbox
Validar geração do token novamente
12. Configuração no ERP
12.1 Parâmetros obrigatórios
Algoritmo: SHA256
Dígitos: 6
Período: 1800
Seed (usar o mesmo, e garantir que a conversão segue os passos descritos no tópico 8)
12. Troubleshooting
12.1 Token não valida
Verificar:
Algoritmo idêntico entre sistemas
Dígitos iguais (6 vs 8)
Período igual (ex: 1800)
Encoding correto do SEED
Reinicialização após mudanças
12.2 Token diferente entre sistemas
Causas comuns:
SEED convertido incorretamente
HEX vs BASE32 inconsistentes
Cache não atualizado
Time drift entre sistemas
13. Testes Recomendados
13.1 Funcionais
Geração com SHA1, SHA256, SHA512
Teste de 6 e 8 dígitos
Validação de períodos variados
13.2 Integração
Mobile Saúde vs ERP
Mobile Saúde vs validador externo
Login completo no sandbox
13.3 Edge cases
Mudança de token no limite de tempo
SEED inválido ou incompleto
Seeds longos e curtos
Diferença de timezone
14. Riscos Identificados
Divergência de parâmetros entre sistemas
Falta de ferramenta oficial de validação centralizada
Conversão manual de SEED (erro humano)
Ambiguidade entre HEX e BASE32
15. Decisões Recomendadas
Padronização adotada:
SHA256
6 dígitos
1800 segundos
SEED baseado em matrícula do beneficiário
Necessidade de sincronização estrita entre sistemas
Necessidade de reinicialização após alterações.