Magento 2 rest API - Comment gérer le cycle de vie de l'authentification API sur les appareils mobiles?

9

Dans Magento [2.2.4] API Web lorsque je transmets le nom d'utilisateur et le mot de passe, il génère un jeton pour ce client spécifique (qui n'est valide que pendant 1 heure - il est configurable à partir de l'administrateur Magento)

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

qui renvoie un jeton.

Après avoir généré le jeton, lorsque nous passons ce jeton dans l'en-tête.

Autorisation :: Porteur * Valeur du jeton *

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

Qui renvoie les détails du client.

Le cas ci-dessus que j'ai expliqué fonctionne bien pour webAPI dans magento2 que j'ai testé dans POSTMAN .

Maintenant, le cas est,

Chaque régénération d'heure de jeton et après cette connexion à nouveau chaque heure n'est pas logique pour l'application mobile.

Ensuite, comment Magento gère les données de connexion des utilisateurs et l'authentification dans l'application mobile, si elle est développée API selon les contrats de service

  • Combien de temps dois-je permettre à mes jetons d'accès d' exister avant leur expiration dans l'application mobile?
    • Je ne veux pas forcer mes utilisateurs à se ré-authentifier toutes les heures dans l'application mobile.
    • Comment gérer correctement le cycle de vie de votre jeton API OAuth2 pour application mobile.

Apporter des modifications aux heures de durée de vie du jeton d'accès ne serait pas une solution logique, car l'application et le Web devraient avoir des heures de vie de jeton différentes

entrez la description de l'image ici

Aditya Shah
la source
Avez-vous essayé d'étendre la durée de vie du jeton à partir du magasin -> configuration -> services -> OAuth -> Durée de vie du jeton client (heures) -?
Manthan Dave
Non, en le vérifiant en définissant une valeur vide de durée de vie du jeton client (heures) - ce qui désactivera la fonction si la valeur est vide. Cela pourrait donc fonctionner.
Aditya Shah
Ce ne sera pas le cas car lorsque nous viderons la valeur de la durée de vie du jeton client, il régénérera le jeton à chaque demande et que toutes les données n'expireront pas (toutes les données de demande) et elles seront stockées dans oauth_token
Aditya Shah
Si vous avez accès au code d'un magasin auquel vous vous connectez ou si vous pouvez écrire un module magento pour votre application, une solution serait de mettre à jour la date de validité du jeton à chaque demande lorsque le jeton client est utilisé, de la même manière que la session est effectuée. Ensuite, jusqu'à ce que votre application fasse des demandes dans la durée de vie du token, le client ne sera pas obligé de renouveler l'autorisation.
Zefiryn
mais en fonction du drapeau, nous considérons que le jeton client est utilisé.
Aditya Shah

Réponses:

3

Pour rechercher un jeton client valide, Magento vérifie deux critères

  1. Le jeton est révoqué (cela se produit lorsque l'utilisateur se déconnecte): la révocation est enregistrée sous la forme 1 dans la table oauth_token
  2. Le jeton est réellement présent dans le oauth_tokentableau

Magento exécute un cron pour supprimer les jetons expirés (selon la durée de vie dans le paramètre administrateur) de la table ( vendor\magento\module-integration\Cron\CleanExpiredTokens.php)

Solution possible

  1. Augmentez la durée de vie du jeton de l'administrateur
  2. Remplacez le cron mentionné ci-dessus pour supprimer uniquement le jeton révoqué, c'est-à-dire les jetons client déconnectés

J'espère que ça répond à ta question

Vishwas Bhatnagar
la source
Je pense que vous parlez des rôles d'utilisateur? comme administrateur ... veuillez également accepter la réponse
Vishwas Bhatnagar
Non, je parle de l'authentification M2 utilisée dans l'application mobile en back-end, car chaque régénération d'heure de jeton et après cette connexion à nouveau chaque heure n'est pas logique pour l'application mobile. Il ne doit être authentifié qu'une seule fois et lorsque l'utilisateur change de mot de passe (activité comme celle-là)
Aditya Shah
je pense avoir suggéré une solution pour cela dans ma réponse ci-dessus, nous utilisons la même solution et travaillons parfaitement pour nous
Vishwas Bhatnagar
1
Merci mec!! J'ai beaucoup cherché mais je n'ai trouvé aucune solution sauf la vôtre :)
Aditya Shah