Introduzione a OAuth 2.0

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

Home page di OAuth: Consulta la home page di OAuth per una visualizzazione a livello generale delle indicazioni su OAuth che fornire.

Questo argomento offre una panoramica di base di OAuth 2.0 su Apigee.

Che cos'è OAuth 2.0?

Esistono molti libri, blog e siti dedicati a OAuth 2.0. Ti consigliamo vivamente di inizia leggendo le informazioni sul codice OAuth 2.0 di IETF la specifica del prodotto. Ecco la definizione di OAuth 2.0 dalla specifica OAuth 2.0 per IETF stesso:

"Il framework di autorizzazione OAuth 2.0 consente a un un'applicazione per ottenere accesso limitato a un servizio HTTP per conto di un proprietario di risorsa orchestrare un'interazione di approvazione tra il proprietario della risorsa e il servizio HTTP consentendo all'applicazione di terze parti di ottenere l'accesso per proprio conto."

La cosa principale che devi sapere è che OAuth 2.0 consente alle app di ottenere un accesso limitato alle risorse protette di un utente (come i conti bancari o altre informazioni sensibili a cui un utente potrebbe voler accedere da un'app) senza che l'utente debba farlo divulgare le proprie credenziali di accesso all'app.

Flusso OAuth 2.0

Ecco il flusso generale per il framework di sicurezza OAuth 2.0. Parleremo di questo flusso più in dettaglio in dettaglio su questo argomento, iniziando con un diagramma, che illustra molto come funziona OAuth 2.0. Se non hai dimestichezza con i termini usati in questo diagramma, leggi questa sezione per una rapida l'introduzione.

Flusso generale per il framework di sicurezza OAuth 2.0.

Termini da conoscere

  • Cliente: chiamato anche app. Può essere un'app in esecuzione su un dispositivo mobile dispositivo mobile o un'app web tradizionale. L'app invia richieste al server di risorse per degli asset per conto del proprietario della risorsa, Il proprietario della risorsa deve concedere all'app l'autorizzazione per accedere alle risorse protette.
  • Proprietario della risorsa: chiamato anche utente finale. Di solito si tratta persona (o altra entità) in grado di concedere l'accesso a una risorsa protetta. Per Ad esempio, se un'app deve utilizzare i dati di uno dei tuoi siti di social media, proprietario della risorsa: l'unica persona che può concedere all'app l'accesso ai tuoi dati.
  • Server di risorse: pensa al server di risorse come a un servizio come Facebook, Google o Twitter; o un servizio RU sulla tua intranet; o un servizio partner sul tuo Extranet B2B. Apigee è un server di risorse ogni volta che è richiesta la convalida dei token OAuth per elaborare le richieste API. Il server di risorse necessita di un qualche tipo di autorizzazione per essere pubblicato le risorse protette nell'app.
  • Server di autorizzazione: il server di autorizzazione è implementato in conformità alla specifica OAuth 2.0 ed è responsabile la convalida delle concessioni di autorizzazione e il rilascio dell'accesso che concedono all'app l'accesso ai dati dell'utente sul server di risorse. Tu può configurare endpoint token su Apigee, nel qual caso Apigee assume il ruolo di server di autorizzazione.
  • Concessione dell'autorizzazione:concede all'app l'autorizzazione a recuperare un accesso. per conto dell'utente finale. OAuth 2.0 definisce quattro "tipi di autorizzazione" specifici. Consulta Quali sono i tipi di autorizzazione OAuth 2.0?
  • Token di accesso:una lunga stringa di caratteri che funge da credenziale utilizzate per accedere alle risorse protette. Consulta la sezione Cos'è un accesso di accesso?.
  • Risorsa protetta:dati di proprietà del proprietario della risorsa. Ad esempio, elenco contatti, i dati dell'account o altri dati sensibili dell'utente.

Dove si trova Apigee

Puoi proteggere qualsiasi API sottoposta a proxy tramite Apigee con OAuth 2.0. Apigee include dell'implementazione del server di autorizzazione e, come tale, può generare e convalidare i token di accesso. Gli sviluppatori iniziano registrando le loro app con Apigee. Le app registrate possono richiedere i token di accesso tramite una delle quattro concessioni tipo di interazione.

Apigee offre un criterio OAuthV2 sfaccettato che implementa dettagli di ogni tipo di autorizzazione, semplificando la configurazione di OAuth su Apigee. Per Ad esempio, puoi configurare un criterio che riceve una richiesta di token di accesso, che valuta tutti credenziali obbligatorie e restituisce un token di accesso se le credenziali sono valide.

Tieni presente che tutti i server di risorse che le chiamate proxy API sicure devono essere protetti da un firewall. ovvero le risorse non devono essere accessibili se non tramite il proxy API o un altro che sia ben protetta).

Che cosa sono OAuth 2.0 tipi di autorizzazione?

Pensa ai tipi di concessione come ai diversi percorsi o interazioni che un'app può intraprendere per ottenere l'accesso di accesso. Ogni tipo di autorizzazione riguarda uno o più casi d'uso e dovrai selezionare quale concessione tipi da utilizzare in base alle proprie esigenze. In generale, ciascun tipo di concessione offre vantaggi e dovrai valutare i compromessi in base ai casi d'uso aziendali. Uno. una considerazione importante è l'affidabilità delle app che accederanno ai tuoi dati. In genere, le app di terze parti sono meno affidabili rispetto a quelle sviluppate e utilizzate all'interno di un per l'azienda.

Apigee supporta i quattro principali tipi di autorizzazione OAuth 2.0:

  • codice di autorizzazione: considerato il tipo di autorizzazione più sicuro. Prima del il server di autorizzazione emette un token di accesso; l'app deve prima ricevere un codice di autorizzazione dal server di risorse. Hai notato questo flusso ogni volta che la tua app apre un browser sul pagina di accesso del server di risorse e ti invita ad accedere al tuo account effettivo (ad esempio Facebook o Twitter).

Se accedi correttamente, l'app riceverà un'autorizzazione codice che può utilizzare per negoziare un token di accesso con il server di autorizzazione. In genere, il tipo di autorizzazione viene usato quando l'app si trova su un server anziché sul client. Questo tipo di concessione è considerata molto sicura perché l'app client non gestisce mai o non vede mai il nome utente per il server di risorse (ad esempio, l'app non vede o gestisce mai le credenziali di Twitter). Questo flusso del tipo di autorizzazione è chiamato anche OAuth a tre vie.

  • implicita: considerata una versione semplificata del codice di autorizzazione. In genere questo tipo di autorizzazione viene utilizzato quando l'app si trova sul client. Ad esempio, l'interfaccia utente viene implementato in un browser utilizzando JavaScript o un altro linguaggio di scripting (anziché risiede e in esecuzione su un server web separato). In questo flusso del tipo di concessione, l'autorizzazione restituisce un token di accesso direttamente quando l'utente è autenticato, invece di emettere un codice di autorizzazione. In alcuni casi, le concessioni implicite possono migliorare la reattività dell'app, ma è necessario valutare questo vantaggio rispetto alle possibili implicazioni per la sicurezza, come descritto specifica IETF.
  • credenziali per la password del proprietario della risorsa: in questo flusso, il client viene emesso un token di accesso quando il nome utente e la password dell'utente vengono convalidati dal server di autorizzazione. Questo flusso è consigliato per le applicazioni altamente affidabili. Un vantaggio di questo flusso, ad esempio, l'autenticazione di base prevede che l'utente presenti il nome utente e la password una sola volta. Da allora viene utilizzato il token di accesso.
  • credenziali client. Prendi in considerazione l'utilizzo in situazioni in cui il client che l'app agisce per conto proprio. Ciò significa che il client è anche il proprietario della risorsa. Questa concessione di solito viene usato quando l'app deve accedere a un servizio di archiviazione dati di backend, esempio. L'app deve utilizzare il servizio per svolgere il proprio lavoro e il servizio è altrimenti oscurato per l'utente finale. Con questo tipo di autorizzazione, un'app può ricevere un token di accesso presentando il suo l'ID client e le chiavi client secret al server di autorizzazione. Non sono necessari ulteriori passaggi. offre una soluzione pronta all'uso per le credenziali client facile da implementare proxy API.

Cos'è un accesso token?

Un token di accesso è una lunga stringa di caratteri che funge da credenziale per accedere e risorse protette. I token delle risorse (chiamati anche token di connessione) vengono passati in Autorizzazione come questa:

$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \
  http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282

Il server di risorse riconosce che il token di accesso sostituisce le credenziali come nome utente e password. Inoltre, i token di accesso possono essere emessi con restrizioni, in modo che Ad esempio, l'app può leggere, ma non scrivere o eliminare, dati sul server delle risorse. Tieni presente che il token di accesso può essere revocato se, ad esempio, l'app viene compromessa. In questo caso, avrai bisogno richiedere un nuovo token di accesso per continuare a utilizzare l'app; tuttavia non dovrai modificare nome utente o password sul server delle risorse protette (ad esempio, Facebook o Twitter).

In genere i token di accesso hanno una scadenza (per motivi di sicurezza). Alcuni tipi di autorizzazione consentono server di autorizzazione per emettere un token di aggiornamento, che consente all'app di recuperare un nuovo token di accesso alla scadenza di quella precedente. Per maggiori dettagli sui token di accesso e di aggiornamento, consulta il documento OAuth di IETF la specifica 2.0.

Accesso limitato tramite ambiti

Tramite il meccanismo degli ambiti, OAuth 2.0 può concedere a un'app l'accesso limitato Google Cloud. Ad esempio, un'app potrebbe avere accesso solo a risorse specifiche, potrebbe essere in grado di aggiornare di risorse o può essere concesso l'accesso in sola lettura. Nei cosiddetti flussi OAuth a tre vie, l'utente specifica in genere il livello di accesso tramite una pagina per il consenso (ad esempio, una pagina web in cui l'utente seleziona l'ambito con una casella di controllo o un altro meccanismo).

Registrare un'app

Tutti i client (le app) devono registrarsi al server di autorizzazione OAuth 2.0 da cui vogliono richiedere i token di accesso. Quando registri un'app, ricevi un set di token. Il primo è una chiave pubblica denominata identificatore client, mentre l'altra è una chiave segreta denominata client il secret. Senza queste chiavi, un'app non può emettere richieste di codici di autorizzazione o token di accesso al server di autorizzazione. Tieni presente che, anche se la specifica OAuth di IETF chiama questo client di chiavi e client secret, la UI di Apigee li chiama ID consumatore e segreto utente. Sono equivalenti.

Riepilogo dei casi d'uso di OAuth 2.0

Il flusso del tipo di autorizzazione OAuth 2.0 che scegli di implementare dipende dal caso d'uso specifico, ad esempio: alcuni tipi di autorizzazione sono più sicuri di altri. La scelta dei tipi di autorizzazione dipende l'affidabilità dell'app client e richiede un'attenta valutazione, come descritto nel tabella seguente:

Caso d'uso Attendibilità Tipi di concessione dell'autorizzazione OAuth 2.0 suggeriti Descrizione
B2B (extranet), intranet, altro

App altamente affidabili, scritte da sviluppatori interni o con un rapporto commerciale con il fornitore dell'API.

App che devono accedere alle risorse per conto proprio.

  • Credenziali client
  • In genere, l'app è anche il proprietario della risorsa
  • Richiede ID client e chiavi client secret
  • È necessaria la registrazione dell'app presso il fornitore di servizi
Siti e portali intranet

App attendibili scritte da sviluppatori di terze parti interni o attendibili.

Un buon esempio è accedere al sito RU della tua azienda per selezionare le assicurazioni, inviare recensioni o modificare le informazioni personali.

  • Password
  • Bias implicito
  • Richiede ID e secret del client, oltre a nome utente e password
  • È necessaria la registrazione dell'app presso il fornitore di servizi
App disponibili pubblicamente Le app non attendibili sono scritte da sviluppatori di terze parti che non hanno un'attività affidabile e la relazione con il provider API. Ad esempio, gli sviluppatori che si registrano all'API pubblica generalmente non dovrebbero essere affidabili.
  • Codice di autorizzazione
  • Richiede all'utente di accedere a un provider di risorse di terze parti (ad es. Twitter Facebook)
  • L'app non vede mai il nome utente e la password dell'utente
  • È necessaria la registrazione dell'app presso il fornitore di servizi
B2C È coinvolto un singolo utente finale (utente di un dispositivo mobile) e le credenziali utente vengono archiviate. sul dispositivo mobile.
  • Bias implicito
  • È necessaria la registrazione dell'app presso il fornitore di servizi.
  • Le credenziali utente vengono archiviate sul dispositivo su cui è in esecuzione l'app.

Confronto tra OAuth 2.0 e chiave API sicurezza

La convalida delle chiavi API richiede che un'app invii una chiave ad Apigee. La chiave deve essere una chiave utente valida di un'app per sviluppatori Apigee associata al proxy API. Se, per qualche motivo, devi revocare l'autorizzazione per un'app client per effettuare chiamate a un proxy, devi revocare chiave utente. Inoltre, nessuna app client che utilizza quella chiave non sarà in grado di accedere al proxy API. Il giorno invece, un token OAuth può essere revocato in qualsiasi momento senza revocare le chiavi dell'app. L'app può richiedere un nuovo token per conto dell'utente e, se viene concesso il token, l'app può per continuare a utilizzare il proxy API.

Un'altra differenza tra una chiave API e un token è che un token può includere metadati che puoi recuperare e utilizzare in un secondo momento. Ad esempio, puoi archiviare l'ID dell'utente effettuando la chiamata API e la useremo per personalizzare le chiamate al servizio di destinazione backend.

Per maggiori dettagli sulla convalida delle chiavi API, consulta API chiave. Per informazioni sull'utilizzo di attributi personalizzati con i token OAuth, consulta Personalizzazione di token e Codici di autorizzazione.

Consigliati risorse

Lettura

Consulta l'articolo Informazioni su OAuth 2.0.