Autenticazione utente nell'applicazione JavaScript

4

Sto sviluppando un'applicazione web che comunicherà con un server tramite WebAPI. Il lato server sarà su Azure e il lato client sarà su hosting personalizzato con un'applicazione JavaScript (ad esempio con ReactJS).

Voglio autentificare l'utente in questo modo:

  1. Inserisci l'accesso e passa l'app del cliente.
  2. Il pass e l'accesso vengono inviati al server su HTTPS con AJAX.
  3. Se l'autenticazione ha esito positivo, il server restituisce un token al client.
  4. Il token è archiviato nella memoria locale.
  5. Tutte le future richieste al server conterranno il token memorizzato in precedenza come parametro.

Il modello di autenticazione è sufficientemente sicuro? Utilizziamo sempre .NET MVC per ora e memorizziamo le informazioni dell'utente nella sessione del server, ma questa è una situazione nuova, in cui il client non è stato eseguito direttamente sul server, ma comunica solo con esso tramite HTTPS.

    
posta Denis Stephanov 05.05.2017 - 10:32
fonte

1 risposta

1

Ciò che descrivi qui è praticamente l'equivalente della classica gestione dei cookie (oltre al problema dei parametri, vedi sotto)

Se fatto su applicazioni SPA come la tua, di solito l'ID di sessione (il token che descrivi) fa parte di un'intestazione HTTP.

Ti consiglio vivamente di evitare di inviare l'ID di sessione come parametro che stai descrivendo. In particolare, perché:

    La cronologia di navigazione
  • (lato client) rivelerebbe l'ID di sessione e faciliterebbe il dirottamento di sessione
  • I registri del server
  • contengono gli ID di sessione e facilitano il dirottamento di sessione

L'utilizzo di intestazioni HTTP invece attenua tali problemi.

We always use .NET MVC for now, and store user information in server session, but this is new situation, where client didn't run on server directly,

Informazioni: assicurati che tutta la tua convalida avvenga sempre almeno sul lato server (e facoltativamente sul lato client), e che le informazioni sensibili sulla sessione rimangano anche sul lato server.

    
risposta data 05.05.2017 - 11:49
fonte

Leggi altre domande sui tag