Autenticazione basata su token e basata su sessione nel back-end

3

Sto provando a creare un'applicazione creando un'API RESTful (Koa.js) per comunicare con i client (Web con React e Mobile con Ionic). Ma sto affrontando problemi quando si tratta di autenticazione.

Quindi la mia domanda è: come devo implementare l'autenticazione in questo scenario? Va bene usare solo un'autenticazione basata su token senza stato o devo anche implementare l'autenticazione basata su sessione per i client Web?

Grazie in anticipo.

    
posta Junior Miranda 21.05.2018 - 22:40
fonte

2 risposte

0

tl; dr: Nel tuo caso particolare, non c'è motivo per non usare l'autenticazione basata su token. Il tuo provider OAuth probabilmente ti fornirà comunque le JWT. Devi assicurarti che i tuoi token siano adeguatamente protetti (usa TLS, scegli una durata appropriata).

È un po 'un mito che ci sia qualcosa di intrinsecamente sbagliato nelle sessioni per il mantenimento dello stato. È vero che HTTP è senza stato e REST (poiché rispecchia da vicino il protocollo sottostante) funziona meglio quando è anche senza stato.

Un'applicazione interamente apolidi, tuttavia, è estremamente limitata. Per qualsiasi cosa non banale, è necessario memorizzare qualche stato, da qualche parte. Puoi fare affidamento sul client per memorizzare questo stato (sotto forma di cookie, o qualche altra memoria locale), o chiedere al server di memorizzarlo in qualche modo. Le due principali considerazioni che devi fare sono:

  • Quanto stato hai bisogno di memorizzare
  • Quanto sono sensibili i dati

Se si dispone di molto stato dell'applicazione, la memorizzazione nel client passandola ad ogni richiesta aumenterà la latenza per l'applicazione e, se i dati sono molto sensibili, è necessario assicurarsi di aver fornito una protezione adeguata (crittografia ) o non passare affatto lo stato al client.

Nel caso di OAuth2, i token restituiti al client sono effettivamente lo stato (che rappresenta l'autenticazione). Questi possono essere sotto forma di JWT (dove le informazioni sono contenute nel token stesso) o qualche forma di token di riferimento, che il server può utilizzare per cercare le informazioni pertinenti.

    
risposta data 23.05.2018 - 12:50
fonte
-1

Quando si implementa REST, una delle migliori pratiche è quella di evitare lo stato nel server web. Le sessioni tendono ad essere implementate nel server web per impostazione predefinita (ci sono modi per evitare di memorizzare lo stato della sessione nel server web, ovviamente). Poiché i token JWT non hanno bisogno di alcuno stato per l'autenticazione, hanno più senso se stai andando con REST.

Mentre crei una nuova applicazione dovresti essere in grado di lavorare con l'autenticazione basata su token.

    
risposta data 22.05.2018 - 15:05
fonte

Leggi altre domande sui tag