Este artigo tem como objetivo de explicar o funcionamento deste interceptor junto com as melhores práticas de uso.
O interceptor Encrypt tem a funcionalidade de criptografar o conteúdo do request, assim a informação trafega com confidencialidade e integridade.
Imagine um cenário em que o body enviado são dados sigilosos e antes do envio precisamos de alguma maneira cifrar os dados. Para isto utilizamos o encrypt onde os dados são cifrados com a chave AES e somente o Gateway tem a chave cadastrada para decifrar estes dados (fazemos isto cadastrando a chave AES, assim permitindo o acesso). O conteúdo enviado no body foi criptografado junto com a chave AES, sendo assim o Gateway primeiramente verifica se a chave (header e chave AES) informada é válida e após a confirmação encaminha o request normalmente.
Isto é utilizado para o usuário cifrar os seus dados enviados no request e somente ele (usuário) e o Gateway que obtém sua chave, tem a permissão de decifrar esses dados.
Em nosso help temos uma explicação sobre a configuração deste interceptor Encrypt, sendo assim vamos focar no passo-a-passo para realizar o fluxo completo.
- O primeiro passo é obter a chave pública do Gateway
Para isso realize um GET em /security/keys
curl -X GET https://environmentURL/security/keys
Atenção: use o endpoint a seguir caso o seu ambiente tenha a API Crypto ao invés do curl anterior: https://environmentURL/api-crypto/api/v1/keys/public - Com a chave pública recebida do Gateway, você precisa realizar a cifra de sua chave AES, para isso, é necessário que você execute um script de sua preferência. (Colocamos alguns scripts de exemplo em anexo de como gerar esta chave, nele é necessário informar a chave pública do Gateway, assim o retorno será a chave AES gerada.)
- Após isso realize um post com a chave AES gerada no passo anterior com o seu ID (lembre-se de guardar o ID enviado no request).
curl -X POST http://envonrimentURL/security/keys -d '{ "id": "id_chave", "key": "chave_criptografada"}'
Atenção: use o endpoint a seguir caso o seu ambiente tenha a API Crypto ao invés do curl anterior: https://environmentURL/api-crypto/api/v1/keys/
obs: o "id_chave" é um conteúdo que pode ser configurado conforme sua necessidade.
obs2: O interceptor de Encrypt terá que ser o primeiro colocado em seu fluxo.
Para simular um uso deste Encrypt, criamos uma API de teste com o seguinte fluxo abaixo:
No Interceptor, configuramos o nome do header que será enviado na chamada a API.
Assim para realizar o request nesta operação precisamos enviar o header-name (configurado no interceptor Encrypt) junto com o valor do id_chave (cadastrado no post anterior), assim o fluxo acontecerá normalmente com os dados sendo criptografados antes do envio e sendo decifrados no momento da execução do interceptor.
Segue abaixo um exemplo do curl utilizado:
curl -X POST https://environmentURL/api/card -H 'Content-Type: application/json' -H 'client_id: be986808-e47e-3dcd-b104-fd57e7a6f511' -H 'key-id: id_chave' -d BI/z/L3WOvHv1WICfYaD5fR02rMNUStugdTc8CNraUmNeGKxB/ZBLnhOJ5k=
Comentários
0 comentário
Por favor, entre para comentar.