Sto creando un flusso di lavoro OAuth2 che si estende su sito Web e app mobili.
Ho bisogno di sapere se il seguente flusso di lavoro è sicuro, dove una registrazione OAuth2 è completata, ma si scopre che l'indirizzo email dell'utente autenticato esiste già nel database dell'applicazione.
Attualmente nella nostra logica di applicazione se l'utente OAuth2 esiste già nel database, l'ID dell'account OAuth2 (ad esempio Google o Facebook) viene semplicemente assegnato alla tabella utente nel database e l'accesso all'account è concesso.
Sono preoccupato che questo sia potenzialmente insicuro, ma riflettendolo penso che potrebbe essere effettivamente OK, dopo aver considerato quanto segue:
-
Abbiamo già verificato l'account email dell'utente in precedenza sulla registrazione utente non OAuth2, quindi sappiamo che questo account email appartiene al nostro utente.
-
Poiché le comunicazioni sono da server a server per recuperare l'e-mail dell'account OAuth2, il provider OAuth2 non può essere indotto a restituire un indirizzo email diverso, a condizione che venga utilizzata la stessa URL di richiesta.
-
Facebook richiede la verifica dell'indirizzo email al momento dell'iscrizione e Google è il fornitore dell'account e-mail e non consente la modifica dell'indirizzo email. Pertanto, sappiamo che il provider OAuth2 ha verificato la proprietà dell'indirizzo email.
Ho visto un'app che richiede che l'utente inserisca la sua password dell'account se accedi con OAuth2 ma ha già un account con la stessa email, ma questo non ha senso, come se un utente malintenzionato fosse in grado di superare l'autenticazione UI per il provider OAuth2, quindi presumibilmente hanno anche accesso all'account di posta elettronica (sicuramente nel caso di Google) e quindi potrebbero ottenere facilmente un'e-mail di reimpostazione della password.
Quello che voglio evitare di fare è concedere l'accesso a un account utente a un utente malintenzionato perché ha presentato un ID OAuth2 con lo stesso indirizzo email.
Riesci a vedere qualche difetto nelle mie supposizioni sopra?