2012-05-04 26 views
5

La specifica OAuth 2.0 definisce lo Resource Owner Password Credentials Grant Type, che consente alle credenziali della password del proprietario della risorsa (ad es. Nome utente e password) di essere utilizzate direttamente come concessione di autorizzazione per ottenere un accesso gettone.Utilizzo di un token di accesso di Facebook come credenziali del proprietario della risorsa in OAuth2.0

Desidero consentire a un utente di "accedere tramite Facebook" sul client invece di fornire le credenziali direttamente. Il client può quindi scambiare il token di accesso di Facebook dell'utente per un token di accesso per il server di autorizzazione. Questo schema si inserisce nel framework di OAuth2?

risposta

2

Il client può quindi scambiare il token di accesso di Facebook dell'utente per un token di accesso per il server di autorizzazione.

Significa che hai 2 server di autorizzazione (uno di Facebook e un altro - il tuo privato) in mente? Se sì, stai abusando di OAuth e dovresti utilizzare lo schema di concessione del codice di autorizzazione.

Sulla figura 5 da OAuth 2.0 spec (v25) è possibile trovare la definizione del flusso di lavoro:

  1. Il proprietario risorsa fornisce al cliente con la sua username e password.

  2. Il client richiede un token di accesso dall'endpoint del token del server di autorizzazione includendo le credenziali ricevute dal proprietario della risorsa. Quando effettua la richiesta, il client si autentica con il server di autorizzazione.

  3. Il server di autorizzazione autentica il client e convalida le credenziali del proprietario della risorsa e, se valido, un token di accesso.

Questa è una citazione da Facebook http://developers.facebook.com/docs/guides/web/:

Per accedere l'utente nel tuo sito, tre cose devono accadere. Innanzitutto, Facebook ha bisogno di autenticare l'utente. Questo assicura che l'utente sia chi dice di essere. In secondo luogo, Facebook ha bisogno di autenticare il tuo sito web. Questo assicura che l'utente sta dando le sue informazioni al tuo sito e non a qualcun altro. Infine, l'utente deve autorizzare esplicitamente il proprio sito Web ad accedere alle proprie informazioni. Ciò garantisce che l'utente sappia esattamente quali dati stanno rivelando al tuo sito.

In entrambi i luoghi si dispone di uno e un solo server di autorizzazione - nel tuo caso - di Facebook.

+0

Sì, ci sono in realtà 2 server di autorizzazione in questo schema. Il primo è la parte della nostra API e il secondo è FB. Quindi ho pensato che se il client ha già un token di accesso FB di un utente, potrebbe utilizzare il token come credenziali dell'utente (non è necessario inserire login/passord). Quindi il nostro server di autorizzazione potrebbe verificare se il token è valido e rilasciare un nuovo token (per il nostro server). Spero che questo abbia un senso :) –

+0

E come ho scritto nella mia risposta, ha senso usare Grant del codice di autorizzazione quindi. –