Invio di token di accesso dal server alle best practice del client

2

Sto provando a scrivere un'app che consenta a un utente di visualizzare più caselle di posta Gmail contemporaneamente. Sto memorizzando il token di aggiornamento per ciascun account nel mio database.

Tuttavia, mi piacerebbe che quasi tutto il traffico da e verso Gmail passasse attraverso il browser: non voglio il passaggio non necessario del server per recuperare la posta e inviarla al client, poiché non ho intenzione di fare nulla con il lato server di posta elettronica.

Questo è lo stesso (o lo stesso tipo di) token che l'utente otterrebbe se avessi accesso al recupero di token sul client. Quindi, quando l'utente si collega, è sicuro afferrare un lato del server token di accesso e inviarlo al client (su HTTPS ovviamente)? In caso contrario, quale sarebbe la migliore pratica qui?

  • Potrei persino ipotizzare che questo sia "più" sicuro rispetto all'archiviazione del token di accesso in un cookie o in una memoria locale. Gli utenti eseguono l'autenticazione con la mia app tramite una JWT, quindi eseguono un GET sul mio server per il token di accesso a Gmail. Quindi il token di accesso a Gmail non viene mai memorizzato da nessuna parte del client. Eventuali correzioni?
posta Greg Pete 26.08.2016 - 05:42
fonte

1 risposta

2

Non puoi farlo, e spiegherò perché. Presumo che stiamo parlando di OAUTH2, che afferma chiaramente ciò che puoi e non può fare con un token. OAUTH2 divide i clienti in cinque categorie:

  • riservato
  • Pubblica
  • Web Application
  • Applicazione browser (lato client)
  • Applicazione nativa (lato client)

Ognuno di questi utilizza i propri metodi di autorizzazione per ottenere la chiave di accesso (tipi di concessione). Prima di poter interrogare un token di autorizzazione, è necessario aver registrato l'applicazione con Google e ottenuto in cambio un ID client (e segreto).

Arrivare al punto; quando hai registrato il cliente hai scelto una categoria di clienti e sto supponendo un'applicazione web (credenziali del cliente) basata sul tuo argomento. Tuttavia, una volta scelto un tipo, prometti di utilizzare qualsiasi token solo per quel tipo di client. Se dovessi inviare il token di accesso dal server al client, rompi questa promessa.

OAUTH2 divide i tipi di client per un motivo, principalmente in base alla sicurezza e alla possibilità di mantenere i token segreti per un po 'di tempo. Se desideri archiviare il token di accesso sul lato client, passa a Implicito . Ovviamente, non è possibile utilizzare la chiave sul server per lo stesso scopo.

L'immagine sotto mostra le differenze.

    
risposta data 26.08.2016 - 10:04
fonte

Leggi altre domande sui tag