Connecter les fournisseurs de SaaS avec les Snaps REST de SnapLogic compatibles avec OAuth

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 :

Créer un projet SnapLogic sur Google Drive

Une fois le projet créé, nous devons activer l'intégration de l'API Drive :

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 :

Fournir le nom et le logo du produit à l'écran de consentement OAuth

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é.

Créer un identifiant client OAuth 2.0 pour une application Web

Prenez note de l'identifiant et du secret du client générés :

Identifiant et secret du client

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 :

Créer un nouveau pipeline avec REST Get Snap, ajouter un nouveau compte OAuth2

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:

Configurer le compte OAuth2

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_typeLe paramètre d'authentification " doit avoir une valeur de "code"(défini par la spécification OAuth), et l'élément "scopeLe 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_promptLes 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 "autoLa 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 :

Fenêtre de consentement à l'autorisation Snap

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 :

Compte OAuth2 avec jetons d'accès et de rafraîchissement acquis

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.

Actualiser automatiquement les jetons d'accès en activant le paramètre Auto-refresh token (actualisation automatique des jetons).

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/fileset nous ajoutons un "q"avec le paramètre de requête paramètre de recherche valeur "title contains 'Target Customers'" :

REST Obtenir la recherche et la liste des fichiers GDrive

Enregistrez et fermez la boîte de dialogue des paramètres pour valider le pipeline et prévisualiser les résultats :

REST Obtenir un aperçu des résultats de l'API GDrive

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.

Catégorie : Produit
Thèmes : API REST SaaS

Nous recrutons !

Découvrez votre prochaine grande opportunité de carrière.