Memorizza oAuth di base per una sessione su un sito web

3

Non sono sicuro che ci sia un buon modo per farlo. Attualmente ho un sito Web in cui gli utenti effettuano l'accesso. In quel sito web ci sono pagine che hanno chiamate API ad un altro servizio, questo servizio utilizza:

Authorization: BASIC username:password

Dove username e password non sono gli stessi usati per accedere al sito. C'è un modo in cui potrei averlo dove fanno un secondo login nel mio sito (una volta che vanno in una di queste pagine) e poi usare questa stringa di autenticazione base64 su più pagine del mio sito in modo sicuro?

Non riesco a memorizzare esattamente il nome utente e la password in un database, poiché sarebbe solo testo in chiaro. Attualmente potrei farli inviare l'utente / passare su ogni pagina che ha bisogno dell'API e basta pubblicarlo senza memorizzarlo, ma questo è un dolore MAGGIORE da fare su ogni singola richiesta.

C'è un modo possibilmente di archiviarlo per tutta la durata del login sul mio sito in modo sicuro?

    
posta Lain 05.02.2018 - 16:34
fonte

2 risposte

1

Forse puoi provare l' API sessionStorage del browser per memorizzare base64 stringa di autenticazione. Come in alcuni siti Web bancari, è possibile richiedere all'utente di immettere la stringa di autenticazione una volta effettuato l'accesso, crittografare la stringa utilizzando la chiave pubblica del server e archiviarla in sessionStorage. Con ogni chiamata API puoi passare questa stringa crittografata e decodificarla sul tuo server per eseguire qualsiasi logica tu voglia.

Una volta disconnesso l'utente e chiuso il browser, il valore memorizzato in sessionStorage verrà rimosso. Fino a quel momento il valore sarà presente nella memoria del tuo browser.

    
risposta data 05.02.2018 - 19:47
fonte
0

Forse potresti salvarlo nel client. È un'idea un po 'pazza, ma in questo modo non hai questi dati sul server.

È possibile crittografare nome utente / password con crittografia simmetrica e memorizzarlo come cookie.

In questo modo, ogni volta che l'utente richiede una pagina, invia un cookie crittografato, che decifri e invia la richiesta al tuo servizio con.

Questa non è una soluzione a prova di proiettile, ma in questo modo non hai tutte le credenziali sul server e non hai testo in chiaro sui client.

    
risposta data 05.02.2018 - 17:30
fonte

Leggi altre domande sui tag