API do Magento 2 rest - Como gerenciar o ciclo de vida da autenticação de API em aplicativos de dispositivos móveis?

9

Na API da web do Magento [2.2.4], quando passo o nome de usuário e a senha , ele gera um token para esse cliente específico (que é válido apenas por 1 hora - é configurável pelo administrador do Magento)

http://magento.host/index.php/rest/V1/integration/customer/[email protected]&password=test@123

que retorna o token.

Depois de gerar o token, quando passamos esse token no cabeçalho.

Autorização :: Portador * Valor do Token *

http://magento.host/index.php/rest/V1/customers/me

O que retorna detalhes do cliente.

O caso acima que expliquei está funcionando bem para webAPI no magento2, que testei no POSTMAN .

Agora o caso é,

A cada hora de regeneração do token e depois desse login novamente a cada hora não é lógico para o Mobile Application.

Então, como o Magento gerencia os dados de login do usuário e a autenticação no aplicativo Mobile, se for desenvolvido API de acordo com os contratos de serviço

  • Quanto tempo devo permitir que o meu acesso fichas de existir antes que ela expire no aplicativo móvel?
    • Não quero forçar meus usuários a autenticar novamente a cada hora no aplicativo para dispositivos móveis.
    • Como gerenciar adequadamente o ciclo de vida do token da API do OAuth2 para aplicativos móveis.

Fazer alterações nas horas de vida do token de acesso não seria uma solução lógica, porque o aplicativo e a web devem ter diferentes horas de vida do token

insira a descrição da imagem aqui

Aditya Shah
fonte
Você tentou estender a vida útil do token em loja-> configuração-> serviços-> OAuth-> vida útil do token do cliente (horas) -?
Manthan Dave
Não, verificando-o criando um valor em branco de Duração do Token do Cliente (Horas) - que desativará o recurso se o valor estiver vazio. Então pode funcionar.
Aditya Shah
Não vai porque quando nós esvaziar o valor do cliente token Lifetime, então ele irá regenerar token de cada solicitação e que todos os dados não irá expirar (todos os dados pedido) e ele será armazenado em oauth_token
Aditya Shah
Se você tiver acesso ao código de uma loja que está se conectando ou puder escrever um módulo magento para o seu aplicativo, uma solução seria atualizar a data válida do token em cada solicitação quando o token do cliente for usado, semelhante à sessão. Até que seu aplicativo faça solicitações dentro do tempo de vida útil do token, o cliente não será obrigado a autorizar novamente.
Zefiryn
mas com base em qual sinalizador, consideramos que o token do cliente é usado.
Aditya Shah

Respostas:

3

Para verificar se há um token de cliente válido, o Magento verifica dois critérios

  1. O token foi revogado (isso acontece quando o logout do usuário): revogado é salvo como 1 na tabela oauth_token
  2. O token está realmente presente na oauth_tokentabela

Magento executa um cron para remover os tokens expirados (conforme a vida útil na configuração de administrador) da tabela ( vendor\magento\module-integration\Cron\CleanExpiredTokens.php)

Solução possível

  1. Aumentar a vida útil do token do administrador
  2. Substitua o cron mencionado acima para remover apenas o token revogado, ou seja, os tokens de cliente desconectados

Espero que isso responda sua pergunta

Vishwas Bhatnagar
fonte
Eu sinto que você está falando sobre as funções de usuário? como administrador ... também por favor, aceite a resposta
Vishwas Bhatnagar
Não, estou falando da autenticação M2 usada no aplicativo móvel no back-end, porque a cada hora de regeneração do token e depois desse login novamente a cada hora não é lógico para o aplicativo móvel. Ele só deve ser autenticar uma vez e quando a mudança de usuário a senha (atividade como essa)
Aditya Shah
Acho que tenho sugeriu uma solução para isso na minha resposta acima, estamos usando a mesma solução e funcionando perfeitamente para nós
Vishwas Bhatnagar
11
Valeu cara !! Eu procurei muito, mas não encontrou qualquer solução, exceto seu :)
Aditya Shah