Perché il server client non può parlare direttamente con un provider di identità come Facebook in OAauth 2.0

2

OAuth 2.0 utilizzato per l'autenticazione da Google ha senso, dato che il server e il client si fidano entrambi di Google, ma non l'uno dell'altro.

Come ho capito, il codice di autorizzazione è passato al server (nel flusso lato server) come parametro URL. Per evitare problemi di sicurezza come il delegato confuso, il codice di autorizzazione è un uso una tantum e il server può utilizzare il codice di autorizzazione per ottenere un token di accesso e un token di aggiornamento.

La mia domanda è: perché questo processo non può essere semplificato se Google (un'entità fidata) invia direttamente il token di accesso al server (e non attraverso il client)? Ciò eliminerebbe la necessità di un codice di autorizzazione. Google può essere certo che stia inviando il token di accesso nel posto giusto perché il cliente avrebbe registrato in anticipo il redirect_uri con Google. Sembra che sia un modello generale che questi protocolli hanno il provider di identità che invia solo cose al server attraverso il client.

    
posta curiousgeorge 02.06.2018 - 06:44
fonte

1 risposta

2

Anche se sarebbe possibile, il processo sarebbe più complesso e quindi più probabile un'attuazione difettosa.

Ad esempio potrebbe funzionare in questo modo:

  1. reindirizza all'endpoint di autenticazione OAuth, include un identificatore di sessione
  2. login utente
  3. Il provider OAuth invia il token di autenticazione e l'identificativo di sessione al server richiedente
  4. la sessione dell'utente è collegata con il token di autenticazione
  5. l'utente viene reindirizzato a REDIRECT_URI

L'identificatore di sessione è necessario, perché altrimenti un utente malintenzionato con tempismo adeguato potrebbe rilevare il token di autenticazione. Come puoi vedere, l'identificatore di sessione sostituisce il token di autenticazione per identificare il client in questo esempio, il che significa che l'invio del token da server a server è solo un ulteriore passaggio.

the client would have registered the redirect_uri with Google beforehand

La registrazione renderebbe il sistema meno flessibile, perché attualmente solo il servizio di chiamata deve decidere su quale provider OAuth fare affidamento. Utilizzando le registrazioni, la relazione deve essere stabilita su due lati.

    
risposta data 02.06.2018 - 12:18
fonte

Leggi altre domande sui tag