Come funziona l'autenticazione esterna?

7

Ad esempio, posso accedere ai siti Web di stackexchange accedendo a siti Web esterni come OpenID, Yahoo, ecc. Come funziona? Come comunicano i siti web (SE e Yahoo !, ad esempio)? Come fa Yahoo! sai che è davvero stackexchange? In che modo StackExchange sa che ho eseguito correttamente l'accesso a Yahoo! ed è davvero Yahoo !? StackExchange sa se mi disconnetto da Yahoo! dopo aver effettuato l'accesso qui?

    
posta Fitri 17.06.2011 - 17:24
fonte

2 risposte

11

Nel tuo particolare esempio, StackExchange utilizza OpenID. OpenID supporta l'idea dei provider di identità: Yahoo è un provider di identità, uguale a Google, MyOpenID, ecc. Per accedere StackExchange ti chiede quale provider desideri utilizzare e poi ti reindirizza alla pagina di accesso di quel provider.

Una volta che ti sei autenticato contro il provider, il provider ti reindirizza a StackExchange con un token. Questo token contiene le informazioni sulla tua identità. Questo è generalmente chiamato Autenticazione basata sulle attestazioni, in cui un reclamo è un'informazione su un'identità, ad es. il tuo nome e le attestazioni sono raggruppate in un token.

La comunicazione viene effettuata tramite reindirizzamenti HTTP 302 e POST HTTP tramite il browser dell'utente. Yahoo conosce il suo StackExchange perché l'URL di Yahoo contiene un parametro che dice che è StackExchange. StackExchange sa che il token di identità è di Yahoo perché è firmato da Yahoo.

Vedi qui: link

E qui: link

    
risposta data 17.06.2011 - 17:54
fonte
6

Per quanto riguarda il token di identità - può assumere diversi moduli. In un caso particolare (che so che OpenID supporta) il token è effettivamente un insieme di parametri URL. Forniscono una serie di cose, tra cui:

  1. Identifica in modo univoco chi sei (ad es. il tuo OpenID / URL)
  2. Una firma. Questo è un hash crittografico, creato dalle informazioni sull'identità sopra e un segreto prestabilito noto solo dal tuo provider OpenID e da StackExchange.

Se modifichi le informazioni identificative, interrompi la firma e StackExchange rifiuterà di accedere. Inoltre, non puoi ricreare una firma da zero, poiché non conosci il segreto condiviso.

Un'altra forma di token, una che mi è più familiare, è una lunga stringa pseudo-casuale. Il tuo browser ritorna dal provider di identità con questo nell'URL. Quindi il sito del cliente (ad esempio StackExchange) controlla il token direttamente contro il provider di identità; il provider guarda nel suo elenco di token emessi di recente e, se trova, restituisce al cliente le informazioni identificative univoche.

Per quanto riguarda il logout / single-out-out - no, StackExchange non sa se ci si disconnette dal servizio OpenID. Allo stesso modo, il tuo provider OpenID non viene informato se ti disconnetti da StackExchange.

Alcuni sistemi (Google mail / docs / calendar è un buon esempio) utilizzano invece un approccio che ti disconnette dal sito / servizio che stai utilizzando e dal tuo fornitore di servizi ID. Tuttavia, tutti gli altri servizi non sono interessati. Ad esempio:

  1. Accedi a Gmail
  2. Collega a Google Documenti (non dovrai eseguire di nuovo l'accesso)
  3. Esci da Gmail (la sessione di Google Documenti non verrà modificata)
  4. Il prossimo servizio Google a cui andrai ti chiederà di accedere di nuovo

References:

risposta data 23.06.2011 - 15:40
fonte

Leggi altre domande sui tag