Outra boa prática é a de fazer-se da utilização de um cache distribuído para armazenar o token de acesso previamente gerado, a fim de reutiliza-lo sem que seja preciso gerar um novo token a cada requisição para as nossas apis.
Recomenda-se o uso de alguma política de cache para os tokens de acesso, visando a diminuição da quantidade de chamadas para geração dos tokens, aumentando a performance dos sistemas envolvidos e diminuindo a quantidade de uso de rede.
Quando um único cliente faz muitas chamadas para a geração de um token, ele irá gerar muitas seções em aberto dentro dos nossos sistemas, correndo o risco de ser identificado como um potencial ataque e ficar bloqueado temporariamente e consequentemente quaisquer chamada à nossas apis será impactada.
O pseudo código abaixo traz uma sugestão para implementação do fluxo de autenticação:
// antes de qualquer requisição:
// busca o token no cache
token_response = cache.get('token-response-key');
// se não existe o token no cache
SE(token_response é nulo)
token_response = POST.getAccessToken(credenciais);
cache.set('token-response-key', token_response);
// caso access_token expirado
SE(token_response.access_token.jwtDecode().exp <= date.now())
// caso refresh_token expirado
SE(token_response.refresh_token.jwtDecode().exp <= date.now())
token_response = POST.getAccessToken(credenciais);
cache.set('token-response-key', token_response);
SENAO
token_response = POST.getRefreshToken(credenciais);
cache.set('token-response-key', token_response);
// fazer a requisição em questão
GET Rchlo.Catalog.Order('Authorization: ' + token_response.access_token)
orgulhosamente desenvolvido por riachuelo.com.br
© Copyright 2017 - 2021. Todos os direitos reservados. Lojas Riachuelo S/A. Rua Landri Sales, 1.070, G02 Anexo B, Guarulhos - SP - Brasil. CEP 07250-130 | CNPJ 33.200.056/0441-97 | IE 796.420.926.112.