OAuth est une norme ouverte pour l‘autorisation. OAuth fournit aux applications clientes un "accès délégué sécurisé" aux ressources du serveur au nom du propriétaire de la ressource. Il spécifie un processus permettant aux propriétaires de ressources d‘autoriser l‘accès de tiers à leurs ressources serveur sans partager leurs informations d‘identification.
- Wikipedia (en anglais)
SnapLogic possède de nombreux snaps qui utilisent OAuth, notamment Box, Eloqua, LinkedIn, Facebook et Google Analytics. Nous le prenons également en charge de manière générique avec nos Snaps REST qui peuvent être utilisés pour se connecter à des fournisseurs pour lesquels nous n‘avons pas encore créé de Snap, il est donc utile de comprendre ce qu‘est OAuth et comment il fonctionne.
Bien qu‘il ne soit pas nécessaire d‘avoir des connaissances préalables sur OAuth pour poursuivre la lecture, si vous souhaitez comprendre la norme OAuth de manière plus approfondie, oauth.net constitue un bon point de départ.
Prenons un cas d‘utilisation courant : vous (l‘utilisateur) souhaitez utiliser SnapLogic (l‘application) pour vous connecter à votre Google Drive (le serveur). Dans cet exemple, votre compte Google est le propriétaire, le serveur est la plate-forme Identify de Google et le client est le Snap REST de SnapLogic.
Nous utiliserons les Snaps REST de SnapLogic pour envoyer et recevoir des données à l‘API Drive de Google, mais il faut d‘abord la configurer. Comme nous devons accéder au contenu de Google, le Snap doit pouvoir prouver à Google qu‘il a été autorisé par l‘utilisateur à interagir avec son Google Drive, tout en permettant à l‘utilisateur de révoquer cet accès directement à partir de son compte (Google fournit une page de paramètres "Apps connectées à votre compte" où les utilisateurs peuvent facilement examiner et supprimer les apps).
La première étape consiste à se connecter à la Google Developers Console et à créer un nouveau projet :
Une fois le projet créé, nous devons activer l‘intégration de l‘API Drive :
Ensuite, nous personnalisons l‘écran de consentement OAuth en fournissant un nom de produit et, éventuellement, un logo :
Enfin, nous configurons un nouvel identifiant "OAuth 2.0 client ID" pour identifier notre Snap auprès de Google lorsque nous demandons l‘autorisation à l‘utilisateur. Nous utilisons "https://elastic.snaplogic.com/api/1/rest/admin/oauth2callback/rest
" comme URI de redirection autorisé.
Prenez note de l‘identifiant et du secret du client générés :
Nous pouvons maintenant créer un pipeline, ajouter le REST Get Snap et le configurer pour demander à l‘utilisateur l‘autorisation de lister ses fichiers Google Drive :
Lors de la création du compte REST OAuth2, nous utilisons l‘identifiant et le secret du client fournis précédemment, et nous configurons les champs restants avec les valeurs spécifiées dans la documentation Google OAuth for Web Server Apps:
La case à cocher "Header authenticated" indique au REST Snap d‘inclure un en-tête HTTP "Authorization" avec chaque requête, dont la valeur est le jeton d‘accès bientôt acquis en tant que jeton Bearer. Vous pouvez également choisir de ne pas activer ce paramètre et d‘inclure à la place un en-tête HTTP "access_token
"dans chaque requête, dont la valeur est l‘expression spéciale "$account.access_token
"qui a été créé après une autorisation réussie.
Le "redirect_uri
"La valeur doit correspondre à l‘URI de redirection autorisé configuré pour l‘identifiant client OAuth 2.0 créé précédemment. Le paramètre "response_type
Le paramètre d‘authentification " doit avoir une valeur de "code
"(défini par la spécification OAuth), et l‘élément "scope
Le paramètre " définit les fonctionnalités de Google Drive demandées (vous pouvez modifier le champ d‘application pour qu‘il corresponde à votre cas d‘utilisation).
L‘option "access_type
" et "approval_prompt
Les paramètres " " sont également inclus dans la configuration du point final d‘authentification. Un paramètre "access_type
"valeur de "offline
"demande à Google de renvoyer un jeton de rafraîchissement après la première autorisation réussie de l‘utilisateur. Cela permet à l‘application Snap de rafraîchir l‘accès au disque Google de l‘utilisateur sans que celui-ci soit présent. La fonction "approval_prompt
"Valeur du paramètre "auto
La valeur " " indique à Google de ne fournir le jeton de rafraîchissement qu‘à la toute première occasion où l‘utilisateur a donné son consentement hors ligne. La valeur "force
"L‘utilisateur est invité à consentir à nouveau à l‘accès hors ligne afin d‘obtenir un nouveau jeton de rafraîchissement.
Un clic sur le bouton "Autoriser" lance la danse OAuth. Selon que l‘utilisateur est déjà connecté à son compte Google ou qu‘il est connecté à plusieurs comptes Google, il devra peut-être se connecter ou choisir le compte à utiliser. Quoi qu‘il en soit, tant que l‘utilisateur n‘a pas déjà autorisé l‘application, il sera invité à autoriser le REST Snap à accéder à ses données Google Drive :
Ces autorisations correspondent aux "scopes
"qui ont été définis précédemment. Vous remarquerez qu‘il s‘agit d‘un site web google.com et que l‘adresse URL (https://accounts.google.com/o/oauth2/auth) commence par la même valeur que celle saisie pour le champ "OAuth2 Endpoint" ci-dessus. Le Snap a également ajouté certains des autres champs, et quelques paramètres de sécurité supplémentaires ont été ajoutés par la plateforme SnapLogic.
En supposant que l‘utilisateur donne son accord en cliquant sur le bouton "Autoriser", les deux étapes suivantes se déroulent dans les coulisses de la plate-forme SnapLogic et visent principalement à vérifier que ni SnapLogic ni Google ne sont trompés par l‘autre partie.
Google renverra un code d‘autorisation à la plateforme SnapLogic, qui enverra immédiatement une demande à l‘URL "OAuth2 Token" (également saisie ci-dessus) avec le code d‘autorisation, l‘ID du client, le secret du client et les paramètres de l‘URI de redirection. Si cette demande est reçue avec succès, Google redirigera à nouveau vers SnapLogic, mais cette fois en incluant un jeton d‘accès, un horodatage d‘expiration de l‘accès et un jeton de rafraîchissement.
Si tout se passe bien, l‘utilisateur verra la vue SnapLogic Designer avec le formulaire REST OAuth Account à nouveau visible, mais maintenant avec des valeurs pour les jetons d‘accès et de rafraîchissement :
Le bouton "Refresh" est désormais également visible (en raison de l‘acquisition d‘un jeton de rafraîchissement), ce qui permet à l‘utilisateur d‘acquérir manuellement un nouveau jeton d‘accès lorsque le jeton existant expire. L‘utilisateur peut également choisir d‘activer le paramètre "Auto-refresh token" pour permettre à la plateforme SnapLogic de rafraîchir automatiquement tout jeton d‘accès expirant, permettant ainsi un véritable mode hors ligne.
Nous pouvons cliquer sur le bouton "Appliquer" pour associer le compte OAuth2 autorisé à la connexion REST. L‘utilisateur peut maintenant commencer à interroger l‘API Google Drive pour répertorier ses fichiers Google Drive.
Les Référence de l‘API Google Drive détaille toutes les capacités de ce avec quoi notre intégration peut interagir. Par exemple, nous pourrions liste des fichiers dont le titre contient "Clients cibles". Pour ce faire, l‘"URL du service" est mise à jour comme suit https://www.googleapis.com/drive/v2/files
et nous ajoutons un "q
"avec le paramètre de requête paramètre de recherche valeur "title contains 'Target Customers'
" :
Enregistrez et fermez la boîte de dialogue des paramètres pour valider le pipeline et prévisualiser les résultats :
et voilà, nous avons réussi une danse d‘autorisation OAuth 2.0 et utilisé le jeton d‘accès acquis pour nous connecter à Google Drive ! Toute la puissance de l‘API Google Drive est désormais accessible dans SnapLogic.