Il token OAuth dovrebbe essere condiviso per implementare SSO?

0

Che metodo comunemente accettato per implementare SSO utilizzando un provider OAuth di terze parti?

Ho un server con risorse utente associate all'ID utente del server, l'ID utente ha anche un ID utente Facebook associato. Sarebbe un buon approccio per autenticare un client sul server se il login fosse reindirizzato, per esempio, a Facebook, dove restituirebbe un token OAuth e il token sarà quindi condiviso con il client?

Supponiamo che SSL sia implementato, quindi il token OAuth agirà nello stesso modo di un cookie di sessione che autorizza le risorse utente sul server.

Lo stesso utente può quindi riautenticarlo con Facebook che restituirebbe lo stesso ID di Facebook, che dà accesso alle stesse risorse dell'utente e un diverso token OAuth che scade indipendentemente e rimuovendo l'app su Facebook è possibile richiamare il server con un richiesta di autenticazione per mantenere le cose sincronizzate.

Questa è una buona politica da usare? E 'sicuro contro attacchi come il sidejack di sessione, il cross site reference, ecc.

    
posta Xster 28.07.2012 - 00:35
fonte

1 risposta

1

Penso che tu ti stia confondendo un po '.

L'SSO viene messo in discussione quando sono coinvolte due o più app (ad esempio: gmail, google drive e google plus sono tre app diverse con SSO, accedi a una di esse, le altre si sono registrate automaticamente). Ci sono due applicazioni in questa domanda?

Non condividi il token di accesso oAuth con il cliente. Per cliente, credo che tu intenda il browser comunque. Si mantiene il token di accesso oAuth nel server collegato alla sessione utente o persistono nel database. Il token di accesso oAuth scadrà dopo un po 'di tempo (l'ora esatta è specificata nella risposta). Quando il token di accesso scade, si ottiene un nuovo token di accesso con il token di aggiornamento che è stato salvato quando l'utente ha autorizzato la propria applicazione al provider. È necessario mantenere il token di aggiornamento per sempre persistendo nel database. In ogni caso, se perdi il token di aggiornamento, dovresti fare l'accesso dell'utente al sito del provider oAuth e ottenere di nuovo l'autorizzazione in modo da ottenere il token di aggiornamento.

    
risposta data 17.01.2013 - 20:56
fonte

Leggi altre domande sui tag