OAuth è uno standard aperto per l'autorizzazione. OAuth fornisce alle applicazioni client un "accesso delegato sicuro" alle risorse del server per conto del proprietario della risorsa. Specifica un processo che consente ai proprietari delle risorse di autorizzare l'accesso di terzi alle proprie risorse server senza condividere le proprie credenziali.
SnapLogic ha molti snap che utilizzano OAuth, tra cui Box, Eloqua, LinkedIn, Facebook e Google Analytics. Lo supportiamo anche in modo generico con i nostri Snap REST che possono essere usati per connettersi con fornitori per i quali non abbiamo ancora creato uno Snap, quindi è utile capire cos'è OAuth e come funziona.
Sebbene non sia necessario avere una conoscenza pregressa di OAuth per continuare a leggere, se si desidera comprendere lo standard OAuth a un livello più approfondito, oauth.net rappresenta un buon punto di partenza.
Facciamo un esempio di utilizzo comune: l'utente desidera utilizzare SnapLogic (l'applicazione) per connettersi a Google Drive (il server). In questo esempio, l'account Google è il proprietario, il server è la piattaforma Identify di Google e il client è lo snap REST di SnapLogic.
Utilizzeremo gli snap REST di SnapLogic per inviare e ricevere dati all'API Drive di Google, ma prima è necessario configurarli. Poiché dobbiamo accedere ai contenuti di Google, lo Snap deve dimostrare a Google di essere stato autorizzato dall'utente a interagire con il suo Google Drive, consentendo allo stesso tempo all'utente di revocare l'accesso direttamente dal suo account (Google fornisce una pagina di impostazioni "App collegate al tuo account" in cui gli utenti possono facilmente rivedere e rimuovere le app).
Il primo passo è accedere a Google Developers Console e creare un nuovo progetto:
Una volta creato il progetto, dobbiamo abilitare l'integrazione di Drive API:
Quindi, personalizziamo la schermata di consenso OAuth fornendo il nome del prodotto e, facoltativamente, un logo:
Infine, configuriamo una nuova credenziale "OAuth 2.0 client ID" per identificare il nostro Snap a Google quando chiediamo l'autorizzazione all'utente. Utilizziamo "https://elastic.snaplogic.com/api/1/rest/admin/oauth2callback/rest
" come URI di reindirizzamento autorizzato.
Prendere nota dell'ID cliente e del segreto generati:
Ora possiamo creare una pipeline, aggiungere lo snap REST Get e configurarlo per richiedere l'autorizzazione all'utente per elencare i suoi file di Google Drive:
Quando si crea l'account REST OAuth2, si utilizzano l'ID e il segreto del client forniti in precedenza e si configurano i campi rimanenti con i valori specificati nella documentazione di Google OAuth for Web Server Apps:
La casella di controllo "Intestazione autenticata" indica a REST Snap di includere un'intestazione HTTP "Authorization" a ogni richiesta, il cui valore è il token di accesso presto acquisito come token Bearer. In alternativa, si può scegliere di non abilitare questa impostazione e di includere invece un "access_token
" in ogni richiesta, il cui valore è l'espressione speciale "$account.access_token
", che è stato creato dopo un'autorizzazione riuscita.
Il "redirect_uri
"deve essere fornito in entrambe le configurazioni degli endpoint auth e token e il valore deve corrispondere all'URI di reindirizzamento autorizzato configurato per la credenziale ID client OAuth 2.0 creata in precedenza. Il parametro "response_type
Il parametro di autenticazione " deve avere un valore di "code
" (definito dalla specifica OAuth), e il tag "scope
Il parametro "definisce le funzionalità di Google Drive richieste (si può modificare l'ambito in base a quello appropriato per il proprio caso d'uso).
La specifica di Google "access_type
" e "approval_prompt
" sono inclusi anche nella configurazione dell'endpoint auth. Un parametro "access_type
" di "offline
" chiede a Google di restituire un token di aggiornamento dopo la prima autorizzazione riuscita dell'utente. Ciò consente a Snap di aggiornare l'accesso a Google Drive dell'utente senza che quest'ultimo sia presente. L'opzione "approval_prompt
" di "auto
", indicherà a Google di fornire il token di aggiornamento solo nella prima occasione in cui l'utente ha dato il consenso offline. Un valore di "force
" chiederà all'utente di acconsentire nuovamente all'accesso offline per acquisire un nuovo token di aggiornamento.
Facendo clic sul pulsante "Autorizza" si avvia la danza OAuth. A seconda che l'utente abbia già effettuato l'accesso al proprio account Google o sia collegato a più account Google, potrebbe essere necessario effettuare il login o scegliere quale account utilizzare. In ogni caso, se l'utente non ha già autorizzato l'applicazione, gli verrà richiesto di consentire a REST Snap di accedere ai dati di Google Drive:
Queste autorizzazioni corrispondono alla voce "scopes
" definiti in precedenza. Si noterà che si tratta di un sito web google.com e l'indirizzo URL (https://accounts.google.com/o/oauth2/auth) inizia con lo stesso valore di quello inserito per il campo "OAuth2 Endpoint" di cui sopra. Snap ha aggiunto anche alcuni degli altri campi e alcuni parametri di sicurezza supplementari sono stati aggiunti dalla piattaforma SnapLogic.
Supponendo che l'utente dia il suo consenso facendo clic sul pulsante Consenti, le fasi successive avvengono dietro le quinte della piattaforma SnapLogic e servono principalmente a verificare che né SnapLogic né Google siano stati ingannati dalla controparte.
Google restituirà un codice di autorizzazione alla piattaforma SnapLogic, che invierà immediatamente una richiesta all'URL "OAuth2 Token" (anch'esso inserito in precedenza) con i parametri del codice di autorizzazione, dell'ID cliente, del segreto cliente e dell'URI di reindirizzamento. Se la richiesta viene ricevuta con successo, Google reindirizzerà nuovamente a SnapLogic, ma questa volta includerà un token di accesso, un timestamp di scadenza dell'accesso e un token di aggiornamento.
Se tutto va bene, all'utente verrà mostrata la vista SnapLogic Designer con il modulo REST OAuth Account nuovamente visibile, ma ora con i valori dei token di accesso e di aggiornamento:
Il pulsante "Aggiorna" è ora visibile (grazie all'acquisizione di un token di aggiornamento), consentendo all'utente di acquisire manualmente un nuovo token di accesso quando quello esistente scade. L'utente può anche scegliere di attivare l'impostazione "Auto-refresh token" per consentire a SnapLogic Platform di aggiornare automaticamente qualsiasi token di accesso in scadenza, consentendo una vera modalità offline.
Possiamo fare clic sul pulsante "Applica" per associare l'account OAuth2 autorizzato allo Snap REST. L'utente può ora iniziare a interrogare l'API di Google Drive per elencare i propri file di Google Drive.
Il Riferimento all'API di Google Drive dettaglia le capacità complete di ciò con cui la nostra integrazione può interagire. Ad esempio, potremmo elencare i file il cui titolo contiene "Clienti target". A tal fine, l'"URL del servizio" viene aggiornato in https://www.googleapis.com/drive/v2/files
e aggiungiamo un "q
" con il parametro di query parametro di ricerca valore "title contains 'Target Customers'
":
Salvare e chiudere la finestra di dialogo delle impostazioni per convalidare la pipeline e visualizzare in anteprima i risultati:
et voilà, abbiamo completato con successo una OAuth 2.0 Authorization Dance e utilizzato il token di accesso acquisito per connetterci con Google Drive! Tutta la potenza dell'API di Google Drive è ora accessibile all'interno di SnapLogic.