Hallo liebe Community, ich versuche derzeit Shopware per REST Api mit node.js zu verknüpfen. Das funktioniert auch schon genz gut, ich schreibe dazu einen node.js wrapper, den ich auch unter der MIT Lizenz frei zur Verfügung stellen werde. Unsere Anforderungen sind das Shopware Backend für unsere Shopverwaltung mit dem Admin tool zu verwenden. Allerdings haben wir auch weitere Funktionalitäten auf unserer Plattform, die mit node.js entwickelt werden. Dazu müssen Diese Datenbanken mit dem Shopware Backend verknüpft werden. Weiter möchte ich was den Shop betrifft direkt von unserem Client, der mit Angular.js entwickelt wird auch auf das Api zugreifen. Dabei geht es zum Beispiel um den PCI status, da ja Zahlungsdaten nicht zu unserem node server gesendet werden dürfen. Jetzt ist meine Frage: - Hat jeman sowas shconmal gemacht und kann mir dazu Erfahrungswerte geben? - Um vom Client auf Shopware zugreifen zu können muss ja ein API_KEY vorhanden sein und dieser damit auch an den Client übermittelt werden. Das kann zu Problemen führen, da wir ja tatsächlich nur wollen, dass sich User Accounts anlegen und bezahlen können usw, aber nicht Daten anderer User abfragen können usw. Kann man da diesen Key auf bestimmte Rechte einschränken, und ist das sinnvoll so vorzugehen, oder gibt es eine bessere Lösung? Vielen Dank und viele Grüße, Alex
Hi Alex, [quote]- Hat jeman sowas shconmal gemacht und kann mir dazu Erfahrungswerte geben?[/quote] ich arbeite momentan in der Tat an einer „Frontend API“, die nicht authentifizierten Usern einen Teil an Daten liefert, und - über OAuth2 (schlussendlich, momentan noch durch ein einfaches von mir gebautes Token System gelöst) Customern Zugriff auf ihre eigenen Daten ermöglicht. [quote]- Um vom Client auf Shopware zugreifen zu können muss ja ein API_KEY vorhanden sein und dieser damit auch an den Client übermittelt werden. Das kann zu Problemen führen, da wir ja tatsächlich nur wollen, dass sich User Accounts anlegen und bezahlen können usw, aber nicht Daten anderer User abfragen können usw. Kann man da diesen Key auf bestimmte Rechte einschränken, und ist das sinnvoll so vorzugehen, oder gibt es eine bessere Lösung?[/quote] Im Allgemeinen - so wie ich das verstanden habe - musst du selbst einen zweiten Auth-Layer bauen, da der API Benutzer nur für ALLE oder KEINE Customer-Lese/Schreibzugriffe eingeschränkt werden kann. Wir sind dann schlußendlich so vorgegangen, daß wir uns eigene Resourcen geschrieben haben, die dann öffentlich zugängliche Daten zurück liefern, oder von unserem eigenen Auth-System den Zugriff des Users validieren; KEINE der Standard-Resourcen können von diesem API User eingesehen werden, da man dadurch dann keine granulare Kontrolle mehr über den Zugriff der Daten hat. btw. wir machen den Client auch mit Angular; als kleiner Tipp vorweg, wenn du Digest/Basic Auth dann verwenden solltest (was bei dir aber nicht sein muss, da du ja durch einen node-Server durch gehst), musst du serverseitig (in deiner bootstrap) den www-authenticate header zu irgend etwas eigenem, wie etwa x-www-authenticate, ändern damit du das Login-Popup, welches als Standardbrowserverhalten definiert ist, verhindern kannst, und dein Auth an die API komplett durch Angular läuft ohne User-Interaktion. Ich bin übrigens seit ein paar Tagen im IRC am idlen, d.h. wenn du mal irgendwelche konkreteren Fragen hast, kannst du mich da ruhig anhauen. LG Marc
Hallo Marc, danke für die Antwort Hast du deine Erweiterungen dann direkt im Shopware System ergänzt oder gehst du auch über einen weiteren Server? Meine Idee war es, die Rest API auszulesen, und ein JWT System zur Authentifizieung zu verwenden. Danach werden wieder alle requests an das node API gesendet und diese übermittelt dann die Daten, die es vom Shopware API bekommt. Damit sind eigentlich viele Probleme zu lösen, allerdings weiß ich noch nicht so recht, wie man dann mit den Zahlungsdaten umgehen soll. Ich denke, über diesen Umweg kann man nicht mehr Shopware als Payment gateway verwenden, weil ja die Zahlungsdaten zu dem Node API gesendet würden und dann erst weiter. Deshalb hatte ich überlegt, die Shop routes direkt mit dem Client zu verbinden um das zu umgehen, wahrscheinlich aber auch blödsinn. Wie löst ihr das? Ja wir können gerne morgen mal chatten Viele Grüße, Alex