Magento 2 rest API - Come gestire il ciclo di vita dell'autenticazione API sull'applicazione per dispositivi mobili?


9

In Magento [2.2.4] API web quando passo username e password , genera token per quel cliente specifico (che è valido solo per 1 ora - è configurabile dall'amministratore Magento)

http://magento.host/index.php/rest/V1/integration/customer/token?username=test.user@test.com&password=test@123

che restituisce token.

Dopo aver generato il token, quando passiamo quel token nell'intestazione.

Autorizzazione :: Portatore * Valore token *

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

Che restituisce i dettagli del cliente.

Il caso sopra che ho spiegato sta funzionando bene per webAPI in magento2 che ho testato in POSTMAN .

Ora il caso è

La rigenerazione del token ogni ora e dopo quel login di nuovo ogni ora non è logica per l'applicazione mobile.

Quindi come Magento gestisce i dati di accesso dell'utente e l'autenticazione nell'applicazione Mobile, se è stata sviluppata l'API secondo i Contratti di servizio

  • Per quanto tempo devo consentire ai miei token di accesso di esistere prima della scadenza nell'applicazione mobile?
    • Non voglio forzare i miei utenti a riautenticare ogni ora nell'applicazione mobile.
    • Come gestire correttamente il ciclo di vita del token API OAuth2 per l'applicazione mobile.

Apportare modifiche alle ore di vita del token di accesso non sarebbe una soluzione logica, poiché l'applicazione e il Web dovrebbero avere diverse ore di vita del token

inserisci qui la descrizione dell'immagine


Hai provato a prolungare la durata dei token da store-> configuration-> services-> OAuth-> Customer Token Lifetime (Hours) -?
Manthan Dave,

No, controllandolo creando un valore vuoto di Durata token cliente (ore) - che disabiliterà la funzione se il valore è vuoto. Quindi potrebbe funzionare.
Aditya Shah,

Non lo farà perché quando svuotiamo il valore di Customer Token Lifetime, rigenererà il token ogni richiesta e che tutti i dati non scadranno (tutti i dati della richiesta) e verranno archiviati in oauth_token
Aditya Shah,

Se hai accesso al codice di un negozio che stai collegando o puoi scrivere un modulo magento per la tua app, una soluzione sarebbe quella di aggiornare la data valida del token ad ogni richiesta quando viene utilizzato il token del cliente, in modo simile alla sessione. Quindi, fino a quando l'app non eseguirà alcuna richiesta entro la durata del token, il cliente non sarà costretto a ripetere l'autorizzazione.
Zefiryn,

ma in base a quale bandiera consideriamo che viene utilizzato il token cliente.
Aditya Shah,

Risposte:


3

Per verificare la presenza di un token cliente valido, Magento verifica due criteri

  1. Token revocato (ciò accade quando si disconnette l'utente): revocato viene salvato come 1 nella tabella oauth_token
  2. Il token è effettivamente presente nella oauth_tokentabella

Magento esegue un cron per rimuovere i token scaduti (come per tutta la durata nelle impostazioni dell'amministratore) dalla tabella ( vendor\magento\module-integration\Cron\CleanExpiredTokens.php)

Possibile soluzione

  1. Aumenta la durata del token dall'amministratore
  2. Sostituisci il cron sopra menzionato per rimuovere solo il token revocato, ad esempio i token del cliente disconnesso

Spero che questo risponda alla tua domanda


Sento che stai parlando dei ruoli degli utenti? come admin ... accetta anche la risposta
Vishwas Bhatnagar

No, sto parlando dell'autenticazione M2 utilizzata nell'applicazione mobile nel back-end, perché ogni ora la rigenerazione del token e dopo quel login di nuovo ogni ora non è logica per l'applicazione mobile. Dovrebbe essere autenticato solo una volta e quando l'utente cambia la password (attività del genere)
Aditya Shah,

penso di aver suggerito una soluzione per questo nella mia risposta sopra stiamo usando la stessa soluzione e lavorando perfettamente per noi
Vishwas Bhatnagar

1
Grazie uomo!! Ho cercato molto ma non ho trovato nessuna soluzione tranne la tua :)
Aditya Shah,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.