Come viene autorizzato un utente senza autenticazione

2

Ho un back-end (API) e un front-end, ad esempio un server web, e ho utenti e provider di ID.

Il server web è fornito da un terzo aprile e potrebbe anche essere un'app mobile, ma in ogni caso, l'utente lo utilizza per accedere ai propri dati.

Generalmente gli utenti avranno bisogno dell'applicazione (Web of Mobile) per essere in grado di fare tutto per loro perché l'API rilascia solo risposte di basso livello in formato JSON. Pertanto, quando un utente richiede che un front end sia autorizzato, questo fornisce a tale front-end l'accesso completo a qualsiasi cosa l'utente possa fare.

Gli utenti si registrano e autenticano tramite i loro account Google / FB / Twitter etc in modo che l'API non debba preoccuparsi delle password e rendere più facile per gli utenti la registrazione.

Quando l'utente visualizza una risorsa, ad esempio i suoi messaggi o la cronologia dell'account o il profilo sul back-end, lo fa tramite un front-end.

Il front-end passa quindi la richiesta della risorsa all'API (che è implementata in modo REST-ish). La mia comprensione è che per far funzionare tutto questo sarebbe usato OAuth per autorizzare il sito Web a richiedere le informazioni private dell'utente.

Correggere le mie conoscenze: dopo la registrazione, l'utente accede al front-end. Il front-end recupera quindi le informazioni per l'utente dal back-end tramite "richieste HTTP autorizzate oAuth", (oAuth 2.0 per essere precisi)

Il back-end vede che la richiesta è autorizzata ma non sa chi è stato (presumibilmente lo è ancora) loggato durante questo processo? Quindi, come fa il back-end a sapere quale cassetta postale o profilo o cronologia delle transazioni devono essere pubblicati?

L'API codificherà la cassetta postale o la cronologia delle transazioni specificata nell'URI, ma in realtà la domanda è: come fa il backend a sapere che il front-end sta richiedendo la cassetta postale corretta per l'utente attualmente connesso?

    
posta Johan 22.01.2015 - 10:50
fonte

2 risposte

1

L'oAuth imposta un token di sessione per ogni utente. Quando l'utente è connesso al front-end, i front-end inviano il token al back-end e non il nome utente e la password. Usando questo token il backend autentica l'utente e mostra il suo profilo. Quindi, utilizzando questo token, il back-end riconosce l'utente e mostra il suo profilo sul front-end. maggiori informazioni

    
risposta data 22.01.2015 - 12:56
fonte
0

questa domanda è simile a quella pubblicata qui: Accedi a un sito utilizzando le credenziali di altri siti insieme alla mia risposta.

Ma focalizzerò questa risposta sulla tua specifica preoccupazione. Se comprendo correttamente la tua domanda, stai chiedendo in che modo il tuo back-end può fidarsi dei dati che gli vengono dati dal front-end. In sostanza, ci stai pensando un po 'male. Quando si avvia una transazione OAuth, il proprietario della risorsa fornisce le proprie credenziali direttamente al servizio (ad esempio Google). Alcune cose accadono poi Google ti restituisce un token di accesso (al portatore). Questo token viene quindi utilizzato per ottenere dati da Google come nome utente o indirizzo e-mail. Se stai utilizzando il tuo client front-end per fare una richiesta API a Google per tali informazioni, semplicemente inserisci questi dati direttamente nel tuo DOM. Quello che non dovresti fare è richiedere i dati dal tuo front-end, quindi prendere quei dati e inviarli al tuo back-end per avviare le informazioni dell'utente (o qualsiasi altra cosa), allora sì che è un problema di sicurezza e fiducia (quindi non lo faresti lo faccio). L'intero punto di utilizzo di OAuth è che non devi fare affidamento sul tuo back-end.

    
risposta data 22.01.2015 - 18:12
fonte

Leggi altre domande sui tag