È questo il modo corretto di usare AWS Cognito?

1

Sto seguendo quanto segue nella mia App React / Node:

  1. Uso di User Pools per un'app Cognito che ho creato
  2. Chiamando il / login endpoint con response_type=token nella mia app React
  3. Una volta ricevuto il token JWT, lo passo al mio nodo / server espresso in un'intestazione (il mio server sta usando ssl)
  4. Sul server Node, utilizzando il pacchetto cognito-express per chiamare cognitoExpress.validate(accessTokenFromClient, callback) a convalidare il token
  5. Se la chiamata ha esito positivo, salva i dettagli dell'utente (email ecc.) e il jwt in localStorage nell'app React

E poi, per ogni chiamata al mio server, sto ripetendo i passaggi 3 e 4 sopra (convalidare jwt) per assicurarmi che l'utente sia autenticato.

Le mie preoccupazioni con l'approccio sopra riportato sono:

  1. Non sono sicuro che cognito-express stia effettivamente chiamando Cognito, o che sia solo decodifica il jwt e prendere una decisione sulla sua validità localmente

  2. Ho provato a lasciare la sessione aperta durante la notte e mi aspettavo che la chiamata a cognitoExpress.validate(accessTokenFromClient, callback) non avrebbe funzionato (perché il jwt scade tra un'ora), ma non lo ha fatto. Significa che un token jwt scaduto è considerato un reclamo valido

  3. Se l'utente è stato autenticato e il suo JWT è scaduto, come posso aggiornare il JWT senza chiedergli di accedere nuovamente?

posta Amarsh 05.11.2018 - 00:52
fonte

1 risposta

0
  1. Le chiamate cognito-espresse Cognito per ottenere la JSON Web Key pubblica (jwks.json) dal pool di utenti che utilizza per convalidare il JWT. L'indirizzo è derivato dal tuo ID piscina e dalla regione che fornisci alla libreria.
  2. Per quanto posso dire questo sembra essere un bug nel cognito-express. Il numero che passano nell'opzione maxAge dovrebbe essere in millisecondi ma la libreria che usano (node-jsonwebtoken) dice che un valore numerico dà la scadenza in secondi. Potresti sollevare un problema nel loro sito github per rimuoverlo.
  3. Dovresti aver ricevuto un token di aggiornamento insieme al token di accesso al primo accesso. Dovresti passare questo token di aggiornamento a Cognito per ricevere un nuovo token di accesso come menzionato nel documentazione . Dovrai farlo tu stesso poiché cognito-express non gestisce questa parte. Fondamentalmente dovrai tenere traccia della scadenza nella tua app ed effettuare una chiamata a Cognito al più tardi o prima della scadenza.
risposta data 05.11.2018 - 04:41
fonte

Leggi altre domande sui tag