OAuth ist ein offener Standard für die Autorisierung. OAuth bietet Client-Anwendungen einen "sicheren delegierten Zugriff" auf Server-Ressourcen im Namen eines Ressourcenbesitzers. Er spezifiziert ein Verfahren, mit dem Ressourceneigentümer den Zugriff Dritter auf ihre Serverressourcen genehmigen können, ohne ihre Anmeldedaten weitergeben zu müssen.
SnapLogic hat viele Snaps, die OAuth verwenden, darunter Box, Eloqua, LinkedIn, Facebook und Google Analytics. Wir unterstützen es auch auf generische Weise mit unseren REST-Snaps, die verwendet werden können, um sich mit Anbietern zu verbinden, für die wir noch keinen Snap erstellen müssen, daher ist es nützlich zu verstehen, was OAuth ist und wie es funktioniert.
Es ist zwar nicht notwendig, Vorkenntnisse über OAuth zu haben, um weiterzulesen, aber wenn Sie den OAuth-Standard auf einer tieferen Ebene verstehen möchten, bietet oauth.net einen guten Ausgangspunkt.
Beginnen wir mit einem häufigen Anwendungsfall: Sie (der Benutzer) möchten SnapLogic (die App) verwenden, um eine Verbindung zu Ihrem Google Drive (dem Server) herzustellen. In diesem Beispiel ist Ihr Google-Konto der Eigentümer, der Server ist die Identify-Plattform von Google und der Client ist der REST-Snap von SnapLogic.
Wir werden die REST-Snaps von SnapLogic verwenden, um Daten an die Drive-API von Google zu senden und zu empfangen, aber es muss zuerst konfiguriert werden. Da wir auf Inhalte von Google zugreifen müssen, muss der Snap eine Möglichkeit haben, Google zu beweisen, dass er vom Nutzer autorisiert wurde, mit seinem Google Drive zu interagieren, während er es dem Nutzer auch ermöglicht, diesen Zugriff direkt von seinem Konto aus zu widerrufen (Google bietet eine Einstellungsseite "Mit Ihrem Konto verbundene Apps", auf der Nutzer Apps leicht überprüfen und entfernen können).
Unser erster Schritt besteht darin, sich in der Google Developers Console anzumelden und ein neues Projekt zu erstellen:
Sobald das Projekt erstellt ist, müssen wir die Drive-API-Integration aktivieren:
Als nächstes passen wir den OAuth-Zustimmungsbildschirm an, indem wir einen Produktnamen und optional ein Logo angeben:
Schließlich konfigurieren wir eine neue "OAuth 2.0 Client ID", um unseren Snap bei Google zu identifizieren, wenn wir den Nutzer um eine Autorisierung bitten. Wir verwenden "https://elastic.snaplogic.com/api/1/rest/admin/oauth2callback/rest
" URL als autorisierte Umleitungs-URI.
Notieren Sie sich die generierte Client-ID und das Geheimnis:
Wir können nun eine Pipeline erstellen, den REST Get Snap hinzufügen und ihn so konfigurieren, dass er die Autorisierung des Nutzers anfordert, um seine Google Drive-Dateien aufzulisten:
Bei der Erstellung des REST OAuth2-Kontos verwenden wir die zuvor angegebene Client-ID und das Geheimnis und konfigurieren die übrigen Felder mit den in der Google OAuth for Web Server Apps-Dokumentation angegebenen Werten:
Das Kontrollkästchen "Header authentifiziert" weist den REST-Snap an, bei jeder Anfrage einen "Authorization"-HTTP-Header einzufügen, dessen Wert das bald zu erwerbende Zugriffstoken als Bearer-Token ist. Alternativ können Sie diese Einstellung auch nicht aktivieren und stattdessen einen "access_token
"Abfrageparameter in jeder Anfrage, dessen Wert der spezielle Ausdruck "$account.access_token
", die nach erfolgreicher Autorisierung erstellt wurde.
Die "redirect_uri
"Der Wert muss mit dem autorisierten Redirect-URI übereinstimmen, der für die zuvor erstellte OAuth 2.0-Client-ID-Anmeldung konfiguriert wurde. Der Parameter "response_type
Der Authentifizierungsparameter " muss den Wert "code
" (definiert durch die OAuth-Spezifikation) und das "scope
Parameter "definiert die angeforderten Google Drive-Funktionen (Sie können den Geltungsbereich an Ihren Anwendungsfall anpassen).
Die Google-spezifische "access_type
" und "approval_prompt
"Parameter sind auch in der Konfiguration des Auth-Endpunkts enthalten. Ein "access_type
" Wert von "offline
" fordert Google auf, nach der ersten erfolgreichen Autorisierung des Nutzers ein Refresh-Token zurückzugeben. Dies ermöglicht es dem Snap, den Zugriff auf das Google Drive des Nutzers zu aktualisieren, ohne dass der Nutzer anwesend ist. Der "approval_prompt
"Parameterwert von "auto
Der Wert " " weist Google an, das Aktualisierungs-Token nur bei der allerersten Gelegenheit bereitzustellen, bei der der Nutzer seine Offline-Zustimmung gegeben hat. Ein Wert von "force
"wird der Benutzer aufgefordert, dem Offline-Zugriff erneut zuzustimmen, um ein neues Aktualisierungs-Token zu erhalten.
Wenn Sie auf die Schaltfläche "Autorisieren" klicken, wird der OAuth-Tanz gestartet. Je nachdem, ob der Nutzer bereits in seinem Google-Konto angemeldet ist oder in mehreren Google-Konten angemeldet ist, muss er sich möglicherweise anmelden oder auswählen, welches Konto er verwenden möchte. Solange der Nutzer die App noch nicht autorisiert hat, wird er in jedem Fall aufgefordert, dem REST-Snap den Zugriff auf seine Google Drive-Daten zu erlauben:
Diese Berechtigungen entsprechen den "scopes
", die zuvor definiert wurden. Sie werden feststellen, dass es sich um eine Website von google.com handelt und die URL-Adresse (https://accounts.google.com/o/oauth2/auth) beginnt mit demselben Wert wie der, der oben für das Feld "OAuth2 Endpoint" eingegeben wurde. Snap hat auch einige der anderen Felder angehängt und einige zusätzliche Sicherheitsparameter wurden von der SnapLogic-Plattform hinzugefügt.
Unter der Annahme, dass der Nutzer sein Einverständnis gibt, indem er auf die Schaltfläche "Zulassen" klickt, erfolgen die nächsten Schritte hinter den Kulissen der SnapLogic-Plattform und dienen hauptsächlich dazu, sicherzustellen, dass weder SnapLogic noch Google von der anderen Partei ausgetrickst werden.
Google sendet einen Autorisierungscode an die SnapLogic-Plattform zurück, die sofort eine Anfrage an die "OAuth2 Token"-URL (ebenfalls oben eingegeben) mit dem Autorisierungscode, der Client-ID, dem Client-Geheimnis und den Redirect-URI-Parametern sendet. Bei erfolgreichem Empfang dieser Anfrage leitet Google erneut zu SnapLogic um, diesmal jedoch mit einem Zugriffstoken, einem Zeitstempel für den Ablauf des Zugriffs und einem Refresh-Token.
Wenn alles gut geht, wird dem Benutzer die SnapLogic Designer-Ansicht mit dem REST OAuth Account-Formular erneut angezeigt, jetzt jedoch mit Werten für die Zugriffs- und Aktualisierungs-Tokens:
Die Schaltfläche "Aktualisieren" ist nun ebenfalls sichtbar (da ein Aktualisierungs-Token erworben wurde), so dass der Benutzer manuell ein neues Zugriffstoken erwerben kann, wenn das vorhandene abläuft. Der Benutzer kann auch die Einstellung "Token automatisch aktualisieren" aktivieren, damit die SnapLogic-Plattform alle ablaufenden Zugangstoken automatisch aktualisiert und einen echten Offline-Modus ermöglicht.
Wir können auf die Schaltfläche "Übernehmen" klicken, um das autorisierte OAuth2-Konto mit dem REST-Snap zu verknüpfen. Der Nutzer kann nun mit der Abfrage der Google Drive API beginnen, um seine Google Drive-Dateien aufzulisten.
Die Google Drive API-Referenz beschreibt detailliert die Möglichkeiten, mit denen unsere Integration interagieren kann. Zum Beispiel könnten wir die Dateien auflisten deren Titel "Zielkunden" enthält. Zu diesem Zweck wird die "Service-URL" aktualisiert zu https://www.googleapis.com/drive/v2/files
und wir fügen ein "q
" Abfrageparameter mit dem Suchparameter Wert "title contains 'Target Customers'
":
Speichern und schließen Sie den Einstellungsdialog, um die Pipeline zu validieren und die Ergebnisse in der Vorschau anzuzeigen:
et voilà, wir haben erfolgreich einen OAuth 2.0-Autorisierungstanz abgeschlossen und das erworbene Zugriffstoken für die Verbindung mit Google Drive verwendet! Die volle Leistung der Google Drive-API ist nun innerhalb von SnapLogic zugänglich.