Autenticazione dell'API REST utilizzando il token di accesso

4

Se si dispone di un'API REST, che quando si accede dal lato client, genera un token di accesso per il client, che viene quindi archiviato nella memoria locale e utilizzato per tutta l'autenticazione da questo punto in poi.

È sicuro continuare a utilizzare lo stesso token di accesso, ad esempio generare il token di accesso, archiviarlo nel database e continuare a utilizzare questo token di accesso fino a quando il client non preme attivamente la disconnessione?

Se no, quali sarebbero i requisiti per rendere questo sicuro?

    
posta Kao 17.07.2014 - 13:01
fonte

2 risposte

2

Sì e no.

Quello di cui parli è come un cookie di autenticazione.

perché, a meno che il computer non sia compromesso, accesso fisico o virus, il cookie è sicuro e solo il computer di origine può utilizzarlo. Molti siti lo fanno, ad esempio questo. Anche se chiudo il browser o il computer, sono ancora connesso perché i cookie rimangono nel mio browser che risiedono sul mio personal computer.

Ma fallo solo per servizi non critici.

No perché più a lungo un cookie di autenticazione rimane attivo più possibilità di furto. Ad esempio, desideri rimanere connesso al tuo conto bancario? Un "amico" vieni a casa tua, lascia il tuo computer aperto. Accede al tuo conto bancario perché sei ancora loggato e rubi un po 'di soldi. Amico fallo sempre con l'account facebook aperto. Inoltre, più a lungo rimane attivo più possibilità è che venga rubato, indipendentemente dal modo in cui è stato rubato.

Più breve è la durata del tuo cookie, più è sicuro. Ma per le applicazioni non critiche, è ok avere i cookie che vivono a lungo e persistono dopo aver chiuso il browser.

    
risposta data 17.07.2014 - 14:24
fonte
1

C'è già molta documentazione su questo argomento - alcuni articoli molto dettagliati sono disponibili qui e qui .

Il punto di un'API è offrire accesso ai dati. Questo accesso può essere pubblico o privato, ma se si tratta di un accesso privato, il tuo lavoro come sviluppatore API è quello di proteggere l'accesso alla tua API. Come i tuoi clienti scelgono di implementare il proprio livello di sicurezza per fornire accesso alle API con le loro credenziali, dipende da loro - ad esempio, l'accesso per un sito che offre agli utenti registrati l'accesso ai dati caricati dalla tua API può essere implementato indipendentemente dal tuo Livello di accesso dell'API, dal momento che il lato server di quel sito Web è quello che in realtà si autentica da solo e comunica con la tua API.

D'altra parte, se fornisci un'API che verrà effettivamente utilizzata direttamente dal lato client - diciamo, le richieste AJAX formano il browser del client per l'API - quindi puoi pensare di esporre pubblicamente parte della tua funzionalità o fornire alcuni mezzi per collegare le chiamate in modo tale che l'utente finale possa autenticarsi prima di utilizzare la propria API (pensare più o meno a qualcosa di simile a ciò che i gateway di pagamento stanno utilizzando per l'autenticazione di terze parti nel proprio sistema).

    
risposta data 17.07.2014 - 14:37
fonte

Leggi altre domande sui tag