Hallo, ich versuche das zu verstehen, komme aber nicht weiter. Ich habe einen Lieferanten/Großhändler. Ihm habe ich eine Rest-API gegeben, bzw. habe ihn eine API Token gegeben. Die Daten werden nun zwischen seinem Datenpool und meinem Bestand abgeglichen via Cronjob, den ich bei ihm eingerichtet habe. Wer greift auf was zu? Mir ist nicht ganz klar, wie das abläuft, quasie der technische Ablauf. Welche Rolle spielt jetzt der Artikelexport im Gambio-Shop bzw. der Cronjob, den man in Gambio im Artikelexport einstellen kann. Brauche ich den eigentlich, muss ich den aktivieren, oder läuft das alles am Gambio-Cronjob auf anderer Ebene vorbei? Oder greift die API vom Großhändler auf die Exportdatei, die direkt unter Gambio im export-Verzeichnis liegt? Wenn dem so wäre, woher kennt denn die API den Namen der Exportdatei im export-Verzeichnis, den ich ja frei wählen kann? Bei mir handelt es sich um ein Verständnisproblem, ich möchte den Ablauf verstehen, wer greift auf was zu beim Datenabgleich über den Cronjob beim Liefernat bzw. Cronjob von Gambio, wie wird hier kommuniziert? Es wäre schön, wenn mir jemand hier auf die Sprünge helfen könnte. Gruß
Dar hat nichts mit der Rest-API zu tun. Den Export kannst Du nutzen um z.B. Artikel zu google-Shopping, Günstiger.de und andren Peis- und Shopping-Portalen zu übertragen. Bzw, aktuelle Dateien zum Abholen für diese Portale bereit zu stellen. Ich vermute, dass Dein Händler nur seine Bestandsdaten in Deinen Shop überträgt - warum sollte er Daten aus dem Shop abrufen wollen? Du solltest Dir die Dokumentation der REST-API ansehen. (Link nur für registrierte Nutzer sichtbar.)
Dein Lieferant liefert die Produktdaten die in deinen Shop sollen, in einem vorgegebenen Format an. Der Token ist ein Berechtigungsnachweis, dass dein Lieferant diese Daten an deinen Shop senden darf. Er kann mit dem Token alles in deinem Shop machen, auch Daten abholen. Zur Visualisierung: Dein Shop ist ein Fabrikgelände mit einem Pförtner am Eingangstor. Dein Lieferant ist ein Bote und bringt Daten (oder will welche holen) und zeigt seinen Token beim Pförtner. Der prüft den und lässt dich bis zur Eingangstür vor. Die steht für den Gambio Shop. Dort gibt der Bote Daten ab und holt welche ab. Der Bote darf nicht rein (z.B. in die Shop-Dateien oder die Datenbank), aber er bekommt an der Eingangstür alles was er möchte. Also eigentlich sollte man einen Token nicht so leichtfertig weitergeben. Ich weiß jetzt nicht genau, ob Berechtigungs-Einschränkungen, die für den User für den man den Token erstellt hat, auch für die REST-API gelten. Und ich frage mich vor allem auch gerade, wie man Token wieder löschen kann?
Danke Euch Beiden! Im Shop selber glaube ich nicht, wahrscheinlich über die Datenbank. Ich habe mal geschaut, es gibt eine Gambio api.php oder so. Mein Lieferant hat eine PHP-Datei, in der er eine Anfrage an meinen Shop sendet, mit dem Token. Er spricht mit seiner Anfrage die Gambio api.php Datei an. Diese Gambio api.php Datei prüft den Token, und erstellt dann eine Berechtigung. Die Gambio api-php erlaubt dem Anfrager, also meinem Lieferanten, nur bestimmte Anfragen, die dem Lieferanten bekannt sind, und die er in seiner anfragenden .php Datei berücksichtigt hat. Zum Beispiel könnte die Lieferant-.php Datei an die Gambio-api.php anfragen, gib mir doch mal bitte den Bestand der Artikel in deinem Shop durch. Die Gambio api.php holt sich dann die Daten (Bestandsdaten) aus der Datenbank, und gibt sie als Rückgabewert an die Lieferanten Php zurück, die er dann mit seinem Datenpool vergleicht, usw. So denke ich mir das - aber, brauche ich dann überhaupt in diesem Fall noch im Artikelexport einen Cronjob, ich denke doch nicht. Denn dieser Cronjob funktioniert doch nur, wenn ich in meiner Datenbank ebenfalls einen Cronjob anlege, der sich mit dem Artikelexport-Cronjob deckt, aber mit der API von Gambio doch nichts zu tun hat, oder? Also: Ist in diesem Fall ein Gambio Cronjob nötig oder nicht? Denn, den Cronjob habe ich bei meinem Lieferanten ja schon angelegt, über ihn werden die Anfragen letztlich gesteuert.. Sehe ich das alles richtig???? Bitte bitte, sagt ja, dann habe ich diese Baustelle von der Backe
Ich glaube nicht. Also ob man Token-Zugriffsrechte beschränken kann - ich glaube nicht, aber ich weiß es nicht sicher. Ich weiß aber sicher, dass wenn du deinem Lieferanten einen Token gibst. Ich bin mir aber sicher, dass ein API Token keine Berechtigung erstellt, und ich bin mir sicher, dass du mit einem Cronjob für einen ArtikelEXPORT sicher keine Bestände von deinem Lieferanten in den Shop bekommst. Wenn du früher Bestände über einen Cronjob für einen ArtikelIMPORT aus einer CSV bekommen hast und dein Lieferant jetzt die Daten direkt per API in deinen Shop spielt, dann brauchst du den Cronjob und den CSV Import nicht mehr, das ist richtig. Du hast beim Lieferanten auch sicher keinen Cronjob angelegt. Meinst du, dein Lieferant hat selbst einen angelegt, mit der er deine Shop API anspricht?
Naja - mit dem Token wird man vielleicht keine Rechte vergeben könne, ich denke mir, der ist dann eher sowas wie ein Passwort. Der Cronjob stößt doch letztlich nur die Ausführung einer Datei an, in diesem Fall die von meinem Lieferanten - die dann mittels Tokenübermittlung die Gambio API (die entsprechnde Datei) bittet, ihm die angefragten Shopdaten als Rückgabewert zu übermitteln. Wie das dann gemacht wird, über get, oder post, keine Ahnung. Das ist mein Gedankenmodell, um mir überhaupt was vorstellen zu können - ich versuche das einfach zu verstehen. Ob das alles so stimmt, weiß ich nicht, man findet im Netz eigentlich sehr wenig über den Ablauf, zumindest habe ich nach langem Suchen nichts gefunden. Vielleicht kann ja jemand was dazu sagen, der tiefer in diesem Thema steckt. Danke L & B
Im Großen und Ganzen wird das so sein, wie von mir beschrieben. (Link nur für registrierte Nutzer sichtbar.)
@Bernd uusk vermutlich benutzt dein Lieferant einen JSON Web Token (Link nur für registrierte Nutzer sichtbar.) Damit kann mann die API ansprechen, ohne E-Mail und Passwort. Der Token ist z.B. auch nur eine bestimmte Zeit gültig. Standard 1 Jahr. Wenn du einen eigenen Benutzer anlegst z.B. "Lieferant" und diesem in die Gruppe "Admin" verschiebst, kannst du die Zugriffsbrechtigungen einschränken und ihm nur auf bestimmte Bereiche Zugriff geben, so kann er z.B. nur auf die API zugreifen und z.B. nur Artikel aktualisieren aber keine Löschen usw. Für diesen Benutzer kannst du dann einen API-Token erstellen. Diesen darfst du dann weitergeben. So weißst du auch, dass nur dieser Admin mit dem Token Zugriff auf die gewünschten API Endpunkte hat. Wenn du z.B. jetzt noch eine andere Schnittstelle Zugriff geben möchtest, ist zu empfehlen dafür einen extra Benutzer mit einem eigenen Token erstellen.
@L & B Im Gambio Admin unter "Kunden->Rollen und Berechtigungen->API Tokens" kann man diese auch wieder deaktivieren und löschen. ACHTUNG! Es sind andere Tokens die nicht für den CSV Export CronJob sind, das sind andere spezielle Tokens. Ein Token für den CronJob wird automatisch erstellt und geändert, wenn man im Ordner /media/ die Datei secure_token_hash löscht. Du müsstest dann alle CronJobs die den alten Token benutzen ändern und den neuen Token entsprechend ändern.
Eigentlich ist die Idee bei den JSON Web Tokens für den API-Zugriff, dass man auch entsprechende Kunden anlegt, denen man ggf. die Berechtigungen auch wieder entziehen kann, wenn man einen Zugang vor Ablauf des Tokens stilllegen will. Heißt im Umkehrschluss, dass man in aller Regel keine Tokens mit Bindung an den Hauptadmin an Dritte herausgeben sollte.
Ich glaube, ich kann unter Kunden->Rollen und Berechtigungen->API Tokens keine Token löschen. Nur in die Zwischenablage packen, oder abgelaufene Token löschen. Aber einmal erstellte Token vor dem Ablauftermin zu entfernen... ?
Zum Verständnis: Wenn die Tokens bei der Verwendung geprüft werden, findet eben gerade kein Abgleich mit der Datenbank statt, die Tokens enthalten eine kryptographische Signatur, durch die sie ohne Datenbankzugriff geprüft werden können. Die Liste der erzeugten Tokens ist daher eher als eine Art Logfile oder Gedächtnisstütze zu betrachten.
Der Token ist letztlich die Berechtigung, die Athentifizierung, wie Till schon sagte, die entsprechende API, letztlich die ausführende php-Datei, die Ausführung zu erlauben. Die API liefert die Daten an den Anfrager, zum Beispiel, um beim Anfrager, einem Lieferantenl, die Shopdaten mit seinem Datenpool abzugleichen. Ich denke, die API liest nicht nur Bestandsdaten vom Shop aus, sondern ändert diese auch in der Db über den automatisierten Import über den Cronjob, den der Lieferant beispielsweise zur Verfügung gestellt hat.
Aber was ist, wenn man einem Partner die Berechtigung entziehen möchte? Weil ein Vertrag ausgelaufen ist, oder man sich nicht mehr vertraut? Oder wenn der Token in falsche Hände geraten ist, durch einen Hack, oder weil man aus Versehen den Token in einem Screenshot im Forum nicht geschwärzt hat? Einmal den Token herausgegeben = unwiderruflicher lebenslanger Zugriff auf die API? Löschen des Benutzers oder Veränderung der Rollen und Rechte hilft ja dann auch nichts, wenn kein Abgleich mit der Datenbank stattfindet?
Doch, bezüglich der Zugriffsrechte des Benutzers, für den das Token erzeugt wurde, findet die Prüfung bei jedem Zugriff statt. Dem Benutzer die Rechte zu entziehen oder den Benutzer gleich ganz zu löschen, wäre also genau die vorgesehene Vorgehensweise.
Weil löschen keinen Effekt hat, macht es keinen Sinn zu löschen. Das ist so wie ein Führerschein im Ausland: Wenn du ihn gemacht hast und in den Händen hältst, kannst du in Frankreich fahren. Da kann dir in Deutschland der Führerschein wegen Raserei entzogen werden, aber das erfahren die Franzosen nie. Die sehen nur, dass du einen gültigen Führerschein in den Händen hältst. Weil die Franzosen nicht in Deutschland überprüfen, ob der Führerschein auch noch wirklich gültig ist. So wie bei Verwendung des Tokens nicht mehr geprüft wird, ob es ihn noch gibt.