Was ist eine Magento 2 "Web API Integration"?

9

Gemäß der Entwicklerdokumentation

Web-APIs im Integrationsstil ermöglichen es einem einzelnen Web-API-Aufruf, mehrere Dienste gleichzeitig auszuführen, um eine effizientere Integration zu erreichen. Ein Beispiel für dieses Verhalten finden Sie im Katalog, in dem ein Web-API-Aufruf ein Produkt erstellen kann. Wenn Ihre Nutzdaten das Inventarobjekt und das Medienobjekt enthalten, erstellt das Framework auch das Inventar und die Medien des Produkts in diesem einen API-Aufruf.

...

Erstellen Sie eine neue Integration in Magento Admin. Klicken Sie zum Erstellen einer Integration auf System> Integration> Neue Integration hinzufügen. Stellen Sie sicher, dass Sie einschränken, auf welche Ressourcen die Integration zugreifen kann.

Es ist nicht ganz klar, was genau eine Integration ist. Das erste Dokumentations-Snippet zeigt an, dass eine Integration (möglicherweise?) Eine Möglichkeit ist, mehrere API-Aufrufe in einer einzigen HTTP-Anforderung zu verketten. Es gibt jedoch kein Syntaxbeispiel dafür. Wenn ich die Informationen im zweiten Dokumentationsschnipsel verwende, kann ich auch ein Integrationsobjekt erstellen, aber es ist nicht klar, was ich damit machen soll. Beim Eintauchen in den Code scheinen Integrationsobjekte einen anderen Authentifizierungscodepfad zu verwenden.

Hat jemand eine klare Vorstellung davon, was diese "API-Integrationen" sind und wie sie funktionieren?

Alan Storm
quelle

Antworten:

7

In Magento 2 gibt es 4 Benutzertypen (siehe \ Magento \ Authorization \ Model \ UserContextInterface ), von denen jeder verwendet werden kann, wenn Anforderungen über Web-APIs gestellt werden:

  • Anonyme Benutzer (Gäste). Der Benutzer gilt als anonym, wenn keine Token oder Cookies für Anfragen verwendet wurden
  • Kunden. Kunden-Token oder Cookie müssen zusammen mit der Anfrage weitergegeben werden
  • Admins. Admin-Token oder Cookie müssen vorhanden sein
  • Integrationen. Das Integrationszugriffstoken sollte im OAuth 2.0-Stil übergeben werden, ODER die Anforderung sollte ordnungsgemäß mit dem Verbraucherschlüssel, dem Verbrauchergeheimnis, dem Zugriffstoken und dem Zugriffstokengeheimnis im OAuth 1.0a-Stil signiert werden

Die Integration kann unter erstellt System > Integration > Add New Integrationwerden. Sie kann dieselben Berechtigungen erhalten wie jeder Administrator (ACL-Baum ist dieselbe). Web-API-Anforderungen können sowohl für den Administrator als auch für die Integration gestellt werden. Was die Integration vom Administrator unterscheidet, ist, dass Drittanbieter Web-API-Anmeldeinformationen mithilfe von OAuth-Handshake abrufen können .

OAuth-Handshake ermöglicht die automatische Integration in ein Mehrbenutzer-System von Drittanbietern (sofern dies von Drittanbietern unterstützt wird):

  • Füllen Sie während der Integrationserstellung optionale Felder aus Callback URLund Identity Link URL(beide sollten vom System eines Drittanbieters bereitgestellt werden)
  • Wenn Sie versuchen, die Integration zu aktivieren, wird der OAuth-Handshake ausgelöst
  • Einige Daten werden von Magento mithilfe einer Server-zu-Server-POST-Anforderung an die Rückruf-URL gesendet. Die Identity Link-URL (Anmeldeseite auf dem System eines Drittanbieters) wird im Popup-Fenster geöffnet und einige GET-Parameter werden gesendet
  • Nach erfolgreicher Authentifizierung der Benutzeranmeldeinformationen fordert der Drittanbieter das Anforderungstoken von Magento an und tauscht es dann gegen das Zugriffstoken aus. Außerdem wird die aktuelle Magento-Instanz in ihren eigenen Datensätzen mit dem Benutzerkonto verknüpft. Das heißt, mehrere Magento-Händler können Konten im selben CRM eines Drittanbieters haben, und das Konto jedes Händlers wird an seine Magento-Instanz gebunden
  • Das ausgestellte Zugriffstoken kann verwendet werden, um Anforderungen an die Magento-Web-API zu stellen. Dieses Token wird dem Magento-Integrationsdatensatz zugeordnet und hat Zugriff auf Ressourcen, die auf der APIRegisterkarte der Integrationsbearbeitungsseite ausgewählt wurden

Kurzer Hinweis zum gleichzeitigen Aufrufen mehrerer Dienste. Diese Funktion wird besser als Aggregations-APIs bezeichnet und hat nichts mit dem Integrationstyp zu tun.

Alex Paliarush
quelle
Korrigiere mich, wenn ich falsch liege. Bei der Magento 2-Authentifizierung gibt es jedoch keinen Consumer-Schlüssel. In den Dokumenten wird klar angegeben, dass M2 einen zweibeinigen Authentifizierungsprozess implementiert. Anfrage und Zugang. Wie hier angegeben devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef
2

Die Integration hier ist das Szenario, in dem Integratoren und Entwickler Webdienste verwenden können, die über die Magento-API mit dem Magento-System kommunizieren. Sie können einen oder mehrere Dienste aufrufen, die Magento dem Administrator in New Integration Form konfigurieren lässt (Scrollen Sie in diesem Bildschirm nach unten, um eine bestimmte API auszuwählen oder alle auszuwählen).

Aufgrund von Sicherheitsproblemen lässt The Magento nur externe autorisierte Anforderungen über einen von drei Authentifizierungstypen zu: - Token-basierte Authentifizierung - OAuth-basierte Authentifizierung - Sitzungsbasierte Authentifizierung

Bei jeder Art der Authentifizierung müssen sich Integrator und Entwickler über ein Benutzerkonto bei Magento registrieren lassen. Mit dem Benutzerkonto können Sie eine Token-ID erhalten, die Sie mit Ihrer Anfrage an Magento senden müssen.

Ich nehme zum Beispiel an, Sie haben bereits Benutzerkonto- und Integrationsinformationen. Jetzt werden Sie darum bitten, einen Token vom Magento zu erhalten. Ich zeige Ihnen das Snippet mit der ersten Art der Authentifizierung (Token-basierte Authentifizierung):

curl -X POST "https://localhost/magento/index.php/rest/V1/integration/admin/token" \
     -H "Content-Type:application/json" \
     -d '{"username":"user_example", "password":"123123q"}'

Wenn erfolgreich, erhalten Sie ein Token wie "asdf3hjklp5iuytre"

Jetzt können Sie in das Magento integrieren, um Daten anzufordern, indem Sie dessen API aufrufen

curl -X GET "http://localhost/magento/index.php/rest/V1/customers/2" \
     -H "Authorization: Bearer asdf3hjklp5iuytre"

Schließlich erhalten Sie möglicherweise eine Kundenliste von Magento. Ich verwende beispielsweise den Befehl curl. Der Integrator und der Entwickler implementieren möglicherweise PHP, C # oder eine andere Sprache, um eine Webdienstanforderung für eine Dienst-URL zu erstellen.

PS: SoapUI ist ein nützliches Tool, um Serviceanfragen zum Testen zu stellen.

Hoffe das hilft.

Tuan Nguyen
quelle
Dies scheint überhaupt nicht die "Integrations" -Objekte unter System> Integration> Neue Integration hinzufügen zu betreffen. Vermisse ich etwas
Alan Storm
Entschuldigung, ich konzentriere mich nur auf die Art und Weise, wie sich Integrator und Entwickler in Magento integrieren. Mit dem Integrationsobjekt kann der Administrator festlegen, auf welche API zugegriffen werden darf, anstatt von der Magento-Benutzerrolle abzuhängen. Der Drittanbieter muss die OAuth-basierte Authentifizierung als eine der Möglichkeiten verwenden, um über das Consumer-Token und das geheime Token im Integration-Objekt auf Magento-Web-APIs zuzugreifen. Siehe devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen
Wenn ich den zweiten Curl-Befehl nach dem ersten verwende, erhalte ich "{" message ":" Keine solche Entität mit% fieldName =% fieldValue "," parameters ": {" fieldName ":" customerId "," fieldValue ": 2}} "Was bedeutet diese Nachricht?
Rishabh Rk Rai