Ir para o conteúdo principal

Token do Relatório

Começou por volta do segundo semestre de 2023 a necessidade de envio de relatórios para os clientes e com isso foi necessário criar um padrão para a autenticação via Token nos relatórios.

No caso, os relatórios são encaminhados através de um link para alguns clientes que necessitam o acesso sem precisar logar no SISMETRO.

O padrão

A fim de ser possível trabalhar com os parâmetros, segue a funcionalidade como funciona:

Para esses casos deverá obrigatoriamente o envio de dois parâmetros: Token e P, sendo que o primeiro é o token de autenticação para aquele relatório e o segundo são os parâmetros do relatório. Ambos são necessários visto que o primeiro é gerado a partir do segundo.

O parâmetro P se refere a uma série de informações para a geração do relatório, como por exemplo: id da Unidade, id do Usuário (caso necessite) e outros filtros para a geração do relatório. Ele se trata de um base64 que é gerado da seguinte forma:

  1. Uma variável $array/$object é enviada(o) para o método indicado: 
    Relatorio::generateParams($array)
  2. É aplicado o json_encode para gerar uma string JSON do array ou objeto;
  3. Com isso é criptografado com base64;
  4. Após isso é adicionado um salt pela função:
    Sismetro_Hash::insertSalt
  5. E novamente é criptografado com base64.

Assim é possível ter um parâmetro criptografado com uma criptografia boa seguindo o padrão para definir os filtros e parâmetros para aquele relatório de forma necessária.

Já para o parâmetro Token é utilizado a função abaixo com o fluxo acima, porém, até o terceiro passo (a primeira criptografia base64):

Sismetro_Hash::geraHashSalted

Com isso, tendo ambos os parâmetros é possível validar se o token é válido ou não.

A validação do token

Para validar o token é só encaminhar para a função abaixo o conteúdo do parâmetro p e do token respectivamente:

Relatorio::checkToken($params,$token)

Com isso, será gerado o token sem o salt para os parâmetros e retirado o salt do token para comparação. Se retornar true, tudo certo, senão, retornará false.