Che cos'è esattamente OAuth (Open Authorization)?


Risposte:


327

Che cos'è esattamente OAuth (Open Authorization)?

OAuth consente di notificare a un fornitore di risorse (ad esempio Facebook) che il proprietario della risorsa (ad esempio tu) concede l'autorizzazione a una terza parte (ad esempio un'applicazione Facebook) ad accedere alle proprie informazioni (ad esempio l'elenco dei tuoi amici).

Se la leggessi dichiarata chiaramente, capirò la tua confusione. Quindi facciamo un esempio concreto: entrare a far parte di un altro social network!

Supponi di avere un account GMail esistente. Decidi di iscriverti a LinkedIn. L'aggiunta manuale di molti e molti amici è noiosa e soggetta a errori. Potresti stufarti a metà strada o inserire errori di battitura nel loro indirizzo e-mail per l'invito. Quindi potresti essere tentato di non creare un account dopo tutto.

Di fronte a questa situazione, LinkedIn ha la Buona Idea (TM) di scrivere un programma che aggiunge automaticamente la tua lista di amici perché i computer sono molto più efficienti ed efficaci nelle attività noiose e soggette a errori. Dal momento che entrare a far parte della rete è ora così facile, non c'è modo di rifiutare una simile offerta, ora lo faresti?

Senza un'API per lo scambio di questo elenco di contatti, dovresti fornire a LinkedIn il nome utente e la password al tuo account GMail, dando così loro troppo potere .

È qui che entra in gioco OAuth. Se GMail supporta il protocollo OAuth, LinkedIn può chiederti di autorizzarli ad accedere al tuo elenco di contatti GMail.

OAuth consente di:

  1. Diversi livelli di accesso: sola lettura VS lettura-scrittura. Ciò ti consente di concedere l'accesso al tuo elenco di utenti o un accesso bidirezionale per sincronizzare automaticamente i tuoi nuovi amici di LinkedIn con i tuoi contatti GMail.
  2. Accedi alla granularità: puoi decidere di concedere l'accesso solo alle tue informazioni di contatto (nome utente, e-mail, data di nascita, ecc.) O all'intero elenco di amici, calendario e cosa no.
  3. Ti consente di gestire l'accesso dall'applicazione del fornitore di risorse. Se l'applicazione di terze parti non fornisce un meccanismo per la cancellazione dell'accesso, resteresti bloccato se avessero accesso alle tue informazioni. Con OAuth, è possibile revocare l'accesso in qualsiasi momento.

Diventerà di fatto (standard?) Nel prossimo futuro?

Bene, sebbene OAuth sia un significativo passo avanti, non risolve i problemi se le persone non lo usano correttamente. Ad esempio, se un fornitore di risorse fornisce un solo livello di accesso in lettura e scrittura a tutte le risorse contemporaneamente e non fornisce un meccanismo per la gestione dell'accesso, non ha senso. In altre parole, OAuth è un framework per fornire funzionalità di autorizzazione e non solo autenticazione.

In pratica, si adatta molto bene al modello di social network. È particolarmente popolare per quei social network che vogliono consentire "plug-in" di terze parti. Questa è un'area in cui l'accesso alle risorse è intrinsecamente necessario ed è anche intrinsecamente inaffidabile (cioè hai un controllo di qualità scarso o nullo su tali applicazioni).

Non ho visto tanti altri usi in natura. Voglio dire, non conosco una società di consulenza finanziaria online che accederà automaticamente ai tuoi dati bancari, anche se tecnicamente potrebbe essere utilizzata in quel modo.


6
Hai reso facile la comprensione. Potrei invece aver cambiato la prima riga in qualcosa del genere. "OAuth consente di notificare a un fornitore di risorse (ad esempio Gmail) che il proprietario della risorsa (ad esempio tu un utente Gmail) concede l'autorizzazione a una terza parte (ad esempio il tuo account LinkedIn) l'accesso alle loro informazioni (ad esempio l'elenco dei contatti)." Ciò che hai scritto, ad esempio Provider e terze parti, "essendo entrambi" Facebook è confuso. Sebbene introduca uno scenario interessante, ovvero Oauth può essere utilizzato anche internamente, tra diversi progetti della tua azienda. Destra? È per questo che hai introdotto un'introduzione complicata?
Miele

Secondo la mia comprensione, lo scopo di OAuth è di concedere l'autorizzazione a tempo limitato a un'applicazione di terzi per conto del proprietario della risorsa senza condividere le credenziali. Sono curioso di sapere se ho bisogno di OAuth per consumare API ospitate sul mio server delle applicazioni dall'applicazione mobile (nessuna terza parte coinvolta)?
Monish Kamble,

Quando una parte fidata mi autorizza, ciò non implica che sia anche un meccanismo di autenticazione?
variabile

245

Che cos'è oAuth?

OAuth è semplicemente un protocollo di autorizzazione sicuro che si occupa dell'autorizzazione di un'applicazione di terzi per accedere ai dati dell'utente senza esporre la propria password. per esempio. (Accedi con fb, gPlus, twitter in molti siti Web ..) funzionano tutti con questo protocollo.

Le parti coinvolte

Il protocollo diventa più semplice quando si conoscono le parti interessate. Fondamentalmente ci sono tre parti coinvolte: oAuth Provider, oAuth Client e Owner.

  • oAuth Client (Applicazione che vuole accedere alle tue credenziali)
  • oAuth Provider (ad es. facebook, twitter ...)
  • Proprietario (la persona con account facebook, twitter ..)

Come funziona?

Ho ipotizzato uno scenario in cui un sito Web (StackOverflow) deve aggiungere l'accesso con la funzione Facebook. Quindi Facebook è il fornitore oAuth e lo stackoverflow è il client oAuth.

  1. Questo passaggio viene eseguito dallo sviluppatore dell'app . All'inizio facebook (oAuth Provider) non ha idea dello stackoverflow (oAuth Client) perché non esiste alcun collegamento tra di loro. Quindi il primo passo è registrare stackoverflow con il sito degli sviluppatori di Facebook . Questo viene fatto manualmente dove gli sviluppatori devono fornire le informazioni dell'app a Facebook come il nome, il sito Web, il logo, il reindirizzamento dell'URL dell'app (importante). Quindi StackOverflow viene registrato correttamente, ha ID client, segreto client ecc. Da Facebook ed è attivo e funzionante con OAUTH . inserisci qui la descrizione dell'immagine

    2. Ora quando l'utente stackoverflow fa clic su Accedi con il pulsante fb . Stackoverflow richiede Facebook con ClientId (fb usalo per riconoscere il client) e redirectUrl (fb tornerà a questo url dopo il successo). Quindi l'utente viene reindirizzato alla pagina di accesso di Facebook. Questa è la parte migliore che l' utente (proprietario) non sta dando le sue credenziali di Facebook a StackOverflow.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

  1. Dopo che il proprietario consente a StackOverflow di accedere alle informazioni . Quindi Facebook reindirizza di nuovo a StackOverflow, insieme a authcode usando il redirectUrl fornito al passaggio 2.
  2. Quindi Stackoverflow contatta Facebook insieme al codice di autenticazione ottenuto per assicurarsi che tutto sia a posto.
  3. Solo allora Facebook darà il token di accesso a StackOverflow. Quindi il token di accesso viene utilizzato da StackOverflow per recuperare le informazioni sul proprietario senza utilizzare la password. Questo è il motivo principale di oAuth, in cui credentail acute non sono mai esposte a applicazioni di terzi.

Per più:

Video veloce

collegamento web


certo localhost è anche un url e perché non scade e pubblica il risultato qui.
Balman Rawat,

2
Sì, puoi utilizzare l'indirizzo IP come URL di reindirizzamento: redirect_uri = ' 127.0.0.1:4200 ' e il nome di dominio OAuth dovrebbe essere 127.0.0.1
Samson Maben,

Ma l'e-mail dovrebbe essere la stessa sul client oAuth e sul provider oAuth perché funzioni?
Rowayda Khayri,

bella spiegazione
JayD,

OAuth 2 è un protocollo di sicurezza, non un protocollo di autorizzazione. La risposta inizia con la nota sbagliata.
Rajat,

13

In poche parole OAuth è un modo per le applicazioni di ottenere credenziali per le tue informazioni senza ottenere direttamente le informazioni di accesso dell'utente su alcuni siti Web. Ad esempio, se si scrive un'applicazione sul proprio sito Web e si desidera che utilizzi i dati dall'account Facebook di un utente, è possibile utilizzare OAuth per ottenere un token tramite un URL di richiamata e quindi utilizzare quel token per effettuare chiamate all'API di Facebook per ottenere il proprio usa i dati fino alla scadenza del token. I siti Web si basano su di esso perché consente ai programmatori di accedere ai propri dati senza che l'utente debba divulgare direttamente le proprie informazioni e diffondere le proprie credenziali online, ma fornire comunque un livello di protezione dei dati. Diventerà di fatto il metodo di autorizzazione? Forse, recentemente ha ottenuto molto supporto da Twitter, Facebook,


14
OAuth non è un processo di autenticazione, ma piuttosto un processo di autorizzazione.
André Caron,

Non sto insinuando che l'applicazione necessita direttamente dell'autenticazione, ma l'utente
esegue

Ho aggiunto la precisione perché OpenID è specificamente finalizzato all'autenticazione delegata (riutilizzare un account esterno esistente) nella speranza che le persone smettano di condividere le proprie credenziali condivise. OAuth è specificamente finalizzato all'autorizzazione (riutilizzo delle risorse) nella speranza di facilitare lo scambio di informazioni.
André Caron,

9

Oauth sta sicuramente guadagnando slancio e sta diventando popolare anche tra le API aziendali. Nel mondo delle app e dei dati, le aziende espongono sempre più API al mondo esterno in linea con Google, Facebook, Twitter. Con questo sviluppo si forma un triangolo di autenticazione a 3 vie

1) Provider API - Qualsiasi azienda che espone le proprie risorse tramite API, ad esempio Amazon, Target ecc. 2) Sviluppatore - Colui che costruisce app mobili / altre tramite queste API 3) L'utente finale - L'utente finale del servizio fornito dal - dire utenti registrati / ospiti di Amazon

Ora questo sviluppa una situazione legata alla sicurezza - (sto elencando alcune di queste complessità) 1) L'utente finale desidera consentire allo sviluppatore di accedere alle API per suo conto. 2) Il fornitore dell'API deve autenticare lo sviluppatore e l'utente finale 3) L'utente finale dovrebbe essere in grado di concedere e revocare le autorizzazioni per il consenso che gli hanno dato 4) Lo sviluppatore può avere un livello di fiducia variabile con il fornitore dell'API, in il cui livello di autorizzazioni le è stato dato è diverso

Oauth è un framework di autorizzazioni che tenta di risolvere il problema sopra menzionato in modo standard. Con la preminenza di API e App questo problema diventerà sempre più rilevante e qualsiasi standard che tenta di risolverlo - che sia ouath o qualsiasi altro - sarà qualcosa di cui preoccuparsi come fornitore / sviluppatore di API e persino utente finale!


9

OAuth ( O pen Auth orization) è uno standard aperto per il protocollo di concessione / eliminazione dell'accesso. Ha usato come modo per gli utenti di Internet di concedere ai siti Web o alle applicazioni l'accesso alle loro informazioni su altri siti Web, ma senza fornire loro le password. Non si occupa dell'autenticazione .

O

OAuth 2.0 è un protocollo che consente a un utente di concedere un accesso limitato alle proprie risorse su un sito, su un altro sito, senza dover esporre le proprie credenziali.

  • Analogia 1: molte auto di lusso oggi dispongono di una chiave. È una chiave speciale che dai al parcheggiatore e, diversamente dalla tua chiave normale, non permetterà all'auto di guidare per più di un miglio o due. Alcuni tasti parcheggiatore non apriranno il bagagliaio, mentre altri bloccheranno l'accesso alla rubrica del telefono cellulare di bordo. Indipendentemente dalle restrizioni imposte dalla chiave parcheggiatore, l'idea è molto intelligente. Dai a qualcuno un accesso limitato alla tua auto con una chiave speciale, mentre usi la tua chiave normale per sbloccare tutto. src da auth0

  • Analogia 2: supponiamo di voler compilare un modulo di domanda per un conto bancario. Qui Oauth lavora in quanto, anziché compilare il modulo per richiedente, la banca può compilare il modulo utilizzando Adhaar o il passaporto.

    Qui sono coinvolte le tre entità seguenti:

    1. Richiedente cioè Proprietario
    2. Il conto bancario è client OAuth, hanno bisogno di informazioni
    3. L'ID Adhaar / Passport è il provider OAuth

7

OAuth significa delegare l'autorizzazione (scegliere qualcuno che può fare l'autorizzazione per te). Si noti che l'autenticazione e l'autorizzazione sono cose diverse. OAuth è l'autorizzazione (controllo dell'accesso) e se si desidera implementare anche l'autenticazione (verifica dell'ID), è possibile utilizzare il protocollo OpenID su OAuth.

Tutte le grandi aziende come Facebook, Google, Github, ... usano questo tipo di autenticazione / autorizzazione al giorno d'oggi. Ad esempio, ho appena effettuato l'accesso su questo sito Web utilizzando il mio account Google, ciò significa che Stackoverflow non conosce la mia password, riceve l'autorizzazione da Google in cui la mia password (ovviamente l'hash) è salvata. Ciò offre molti vantaggi, uno di questi è; Nel prossimo futuro non dovrai creare più account su ogni sito web. Un sito Web (di cui ti fidi di più) può essere utilizzato per accedere a tutti gli altri siti Web. Quindi dovrai solo ricordare una password.


2

OAuth è successo quando abbiamo registrato un account SO con il pulsante Facebook / Google.

  1. Applicazione (SO) che reindirizza l'utente all'URL di autorizzazione del provider. (Visualizzazione di una pagina Web che chiede all'utente se desidera concedere all'applicazione l'accesso per leggere e aggiornare i propri dati).
  2. L'utente accetta di concedere la procedura di richiesta.
  3. Il provider di servizi reindirizza l'utente all'applicazione (SO), passando il codice di autorizzazione come parametro.
  4. SO scambia il codice con una concessione di accesso.

Fonte: fornitori di servizi OAuth1


Ciao, ho bisogno di lavorare con l'API REST quindi installa oAuth, in realtà sto usando Magento, in localhost, ho installato oAuth, nel server live come posso installare, sto usando il server VPS GoDaddy, qualche aiuto? @john joe
Gem

@Rathinam ciao, II vorrei aiutarti, ma è fuori dalla mia esperienza. Mi dispiace
John Joe,

Posso usare l'API REST senza oAuth? @Giovanni Joe
Gemma,

@Rathinam sì, dipende da te
John Joe,

1

OAuth è uno standard aperto per l'autorizzazione, comunemente usato come modo per gli utenti di Internet di accedere a siti Web di terzi utilizzando i propri account Microsoft, Google, Facebook o Twitter senza esporre la propria password.


2
Penso che tu abbia confuso OAuth e OpenID
A23149577 l'

0

OAuth è un protocollo utilizzato dal proprietario delle risorse (facebook, google, tweeter, microsoft live e così via) per fornire le informazioni necessarie o per fornire un'autorizzazione per la riuscita della scrittura su un sistema di terze parti (ad esempio il sito). Molto probabilmente senza il protocollo OAuth le credenziali dovrebbero essere disponibili per i sistemi di terze parti che saranno un modo inappropriato di comunicazione tra tali sistemi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.