2010-08-27 6 views
33

Nel protocollo OAuth, un consumatore di servizi chiederà all'utente di autorizzare una richiesta di token nel dominio fornitore di servizi, quindi scambia il richiesta di token di token di accesso dal fornitore di servizi.Perché OAuth è progettato per avere token di richiesta e token di accesso?

Mi chiedo perché OAuth è progettato per avere due token nel protocollo.

Perché non utilizzare solo un singolo token in questo processo? In altre parole, l'utente autorizza il token e l'utente del servizio recupera le informazioni dal provider con il token.

risposta

27

Per ragioni di usabilità e sicurezza.

Dal Beginner’s Guide to OAuth:

https://hueniverse.com/beginners-guide-to-oauth-part-iii-security-architecture-e9394f5263b5

... Mentre in gran parte un artefatto di come la specifica OAuth si è evoluta, il design a due Token offre alcune caratteristiche di usabilità e di sicurezza che ha reso la pena di rimanere nelle specifiche. OAuth opera su due canali: un canale frontale che viene utilizzato per coinvolgere l'utente e richiedere l'autorizzazione e un canale secondario utilizzato dal consumatore per interagire direttamente con il fornitore di servizi. Limitando il token di accesso al canale posteriore, il token stesso rimane nascosto all'utente. Ciò consente al token di accesso di avere significati speciali e di avere una dimensione maggiore rispetto al token di richiesta del canale anteriore esposto all'utente quando richiede l'autorizzazione e, in alcuni casi, deve essere inserito manualmente (dispositivo mobile o set-top box) .

===

Si noti che questa domanda è una vittima di

Why must we "change temporary credentials for token credentials" in OAuth?

Se la spiegazione dal Guida per principianti non è chiaro, quindi andare a leggere @npdoty's take on it.

+0

Link Beginner's Guide to OAuth sembra rotto. Anche il termine "token di richiesta" sembra attualmente non usato. È simile al codice di autorizzazione da [La documentazione OpenIdConnect 1./OAuth2] (http://openid.net/specs/openid-connect-core-1_0.html)? –

1

Da The Official OAuth 1.0 Guide

Il protocollo OAuth permette siti web o applicazioni (consumatori) per accedere risorse protette da un servizio Web (Service Provider) tramite un API, senza richiedere agli utenti di rivelare la loro Servizio Credenziali del fornitore ai consumatori . Più in generale, OAuth crea una metodologia generica liberamente implementabile e per l'autenticazione API .

Un esempio di caso di uso sta permettendo servizio stampa printer.example.com (consumatore), per accedere private foto memorizzate su photos.example.net (Service Provider), senza richiedere agli utenti di fornire il loro Credenziali photos.example.net a printer.example.com.

OAuth non richiede un utente specifico interfaccia o interazione modello, nè vuol specifica come Service Provider autenticare gli utenti, rendendo il protocollo ideale per i casi in cui le credenziali di autenticazione sono non disponibili per il consumatore, come ad esempio con OpenID.

OAuth si propone di unificare l'esperienza e implementazione dell'autenticazione servizio Web delegato in un unico, protocollo community-driven. OAuth si basa su protocolli esistenti e sulle migliori pratiche che sono state implementate in modo indipendente da da vari siti Web. Uno standard aperto , supportato dai grandi e dai piccoli provider allo stesso modo, promuove un'esperienza coerente e affidabile per per gli sviluppatori di applicazioni e gli utenti di di tali applicazioni.

Per riassumere quanto detto sostanzialmente l'utente fornisce un nome utente e una password per un token di richiesta OAuth. Fornisci il servizio che desidera connettersi a qualcosa utilizzando OAuth il token di richiesta e ricevono il token di accesso. Questo fa sì che il servizio non veda mai/usa nome utente e password.

+3

Il token di richiesta viene generato dal consumatore del servizio. Nome utente e password non possono essere ripristinati dal token di richiesta. Quindi, perché non usare il token di richiesta come token di accesso? –

+1

Questo è ciò che fa xAuth, ma non riesco a trovare alcun motivo. –

+0

xAuth richiede all'utente di condividere le sue credenziali (nome utente e password) con l'app client. OAuth è progettato in modo che non sia necessario. – fiirhok