2012-09-18 15 views
5

Ho fatto ricerche su questo concetto di Oauth e sono ancora molto confuso su questo concetto. Una delle mie domande principali è come registrarsi con un account google o un account twitter.Come si registra un utente con Oauth?

Ad esempio, diciamo per registrarsi al mio sito Web, è necessario fornire un nome utente/password/email/GroupName. Se ti registri attraverso il mio sito web, allora puoi fornire facilmente quei campi. Tuttavia, supponiamo che l'utente desideri registrarsi tramite Google. Come sarebbero questi campi popolati?

Dalla mia comprensione, una volta registrati con le credenziali di Google, si viene reindirizzati a una pagina del mio sito Web in cui si compilano i campi richiesti. Non sono sicuro che sia corretto. Qualcuno può aiutarmi a capirlo di più?

+0

Di quale Oauth stai parlando? Ce ne sono diversi, ed è anche considerato rotto. – hakre

+0

Se si sta autenticando con Oauth, perché è necessario un nome utente e una password? Per Email e gruppo, è necessaria una pagina di registrazione separata. Con un account Google puoi ottenere un indirizzo email, ma altri account Oauth potrebbero non averne uno disponibile. – mcrumley

+0

@hakra OAuth è * non * rotto, può essere utilizzato in modo sicuro se implementato correttamente. Ha i suoi lati negativi e le sue complessità, come quasi tutti gli standard che tengono conto di molti casi d'uso. –

risposta

6

Fondamentalmente OAuth funziona così (a seconda della versione di questi punti sono costituiti da più fasi):

  • di reindirizzare l'utente a un fornitore, dove si registra in
  • l'utente viene reindirizzato di nuovo voi e viene visualizzato un token di accesso

Usando questo token di accesso è possibile richiedere i dati degli utenti dal provider. In genere i provider forniscono una chiamata che è possibile utilizzare per chiedere l'indirizzo e-mail dell'utente, il nome completo e un ID utente (fornitore specifico), ma questo non fa parte di OAuth.

Come ora usi queste informazioni per gestire quell'utente come se avesse effettuato l'accesso al tuo sito è completamente da solo. Probabilmente vuoi creare un nuovo oggetto utente dalla tua parte ogni volta che vedi un nuovo ID utente .

+0

O vedo. Quindi, se comprendo correttamente, quando un utente effettua l'accesso con la propria password/email di Google, devo quindi reindirli alla mia pagina in cui vengono inserite le altre credenziali? – user1436497

+0

@ user1436497 si potrebbe, ma sarebbe una cattiva UX. – Mahn

0

Ci sono alcuni concetti di base che richiedono una certa chiarezza prima di poter capire come avviene una nuova registrazione utente utilizzando OAuth2. Questi sono:

  • Resource proprietario (Si, l'umano)
  • Identity Provider (Google, Facebook, Twitter, ecc)
  • Server Resource (Idem come provider di identità, o qualche altro servizio)
  • Risorse (cose che si desidera l'accesso a)
  • applicazione client (l'applicazione che si sta utilizzando per accedere a tali cose)

per registrazione di nuovi utenti, si seguirà ° La stessa sequenza dell'app client che richiede l'autorizzazione per ottenere l'accesso alle risorse. Ciò attiverà una pagina di accesso, l'accesso dell'utente, il codice di autorizzazione viene creato (dall'IdP) e inviato all'app client. L'app client scambia questo codice con un token di accesso (è necessaria una firma di crittografia, legge la documentazione, in pratica consente all'app client di dimostrare la propria identità).

Questo token di accesso viene quindi utilizzato per richiedere l'accesso alle risorse, in questo caso il nuovo profilo utente. Questo potrebbe essere il nome, l'e-mail, l'immagine, ecc. Usalo per creare una nuova riga nel database del profilo delle app del client. Viene creato un nuovo account utente.

Quindi per gli accessi successivi, l'app client utilizzerà questo token di accesso per convalidare la sua vita con il server di Google Auth e quindi creare una sessione locale/cookie per accedere all'utente.

Spero che questo sia chiaro.

Problemi correlati