API-User ohne Zugriff auf API

Moin zusammen,

kurioser Fall: Ich habe mit einem API-User (ist aktiv, Haken bei API-Zugang ist gesetzt, lokaler Admin) keinen Zugriff auf die API. Weder über Postman noch über das Ansteuern eines Endpoints mit dem Browser, z.B. api/version. Nutzername und API-Key sind korrekt. Der Shop gibt mir folgendes JSON zurück:

{
"success": false,
"message": "Invalid or missing auth"
}

Googeln brachte bisher keinen Erfolg. Habt Ihr ne Idee, woran das liegen könnte? Shopversion ist 5.5.10. Alt, ich weiß, aber diese Grundfunktionalität müsste der Shop doch beherrschen.

Edit: Das Problem besteht natürlich mit allen API-Usern, die ich anlege.

Ruft du vielleicht die falsche URL oder Domain auf? Ein Shopware-Fehler ist hier nicht bekannt.

Zeigt mal ein Beispiel wie dein Nutzername und Key aufgebaut ist.

Moin,

ich schlage mich derzeit mit dem selben Problem rum. Ein Kunde hat uns den Zugriff über die API im Backend eingestellt und den Api-Key mitgeteilt. Der Nutzer ist auch Aktiv und der haken bei API-Zugang ist auch aktiv. Dennoch bekommen wir dieselbe Fehlermeldung. Wenn ich direkt über den Browser versuche auf die api/articles zu navigieren und den entsprechenden Nutzer und Api-Key eintrage, werde ich immer wieder aufs neue aufgefordert die Credentials einzugeben. Kann es sein, dass noch eine Server-Konfiguration vorgenommen werden muss? (Im Backend steht auch „Für die Verwendung der REST-API ist evtl. eine Server Konfiguration notwendig. Mehr informationen“) Der Link führt jedoch zu keiner wirklichen Seite mehr

Moin!

Ich glaube auch nicht, dass es sich um einen Shopware-Fehler handelt. Vielleicht eine Server-Konfiguration, wie b.cinar vermutet? Irgendwo ein Häkchen? Die URL stimmt soweit.

Der Nutzername ist 10 Zeichen lang, Groß- und Kleinbuchstaben, der Key wurde im Backend gewürfelt, sieht also so ähnlich aus: RaMTm08wdTDEd1yDJP5RF84XI0S4B76S8txfBB1f

Schon irgendwie beruhigend, dass man damit nicht allein ist. :slight_smile:

Mir ist keine Server-Einstellung bekannt, die je auf die API Einfluss genommen hat. Die API ist ja nichts anderes wie ein Controller, also wie Frontend oder Backend. So aus der Ferne ist das hier eher Rätselraten. Müsste sich jemand mal direkt im Shop ansehen. An Shopware liegt es jedenfalls nicht - da ist mir so ein Verhalten bei den letzten Version noch nie aufgefallen.

Ich habe die Wayback Machine angeworfen. Die Seite ist archiviert. Der Artikel bezieht sich auf Shopware 4. Zum Thema Server-Konfiguration ist dort folgendes zu lesen:

<— Start—>
Es muss sichergestellt werden, dass der „Authorization“-Header an das PHP-Script weitergegeben wird.
Apache + mod_fcgid

FcgidPassHeader Authorization

Apache + mod_fastcgi + php-fpm

AddHandler php5-fcgi .php Action php5-fcgi /php5-fcgi Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization

Nginx

fastcgi_param HTTP_AUTHORIZATION $http_authorization;
<— Ende—>

Mir als Entwickler sagt das herzlich wenig, ehrlich gesagt. Kann es sein, dass diese Einstellungen auch für Shopware 5 einzurichten sind?

In diesem Zusammenhang vielleicht auch mal über ein Update und Wechsel der PHP-Version nachdenken.

Auch interessant das im Shopware 5.5.x Backend ein Verweis auf Shopware 4 gemacht wird.
Aus meiner Seite ist es leider auch nicht möglich die Shopware Version des Kunden hochzuziehen.
Ich gehe aber auch eher davon aus, dass es an einer Server-Konfiguration liegt oder einer htaccess Datei. Wobei in meinem Fall keine htaccess-Datei vorliegt. Da muss irgendwas mit der Server-Konfiguration sein, welche man nicht direkt über das Shopware 5 Backend ansteuern kann.

Laut dieser Meldung schlug die Anmeldung fehl.

Bei mir bzw. unserem Kunden ist ein Update auch eher ein Projekt für die nähere Zukunft als eine geeignete Maßnahme für jetzt. Man kennt das ja, da sind etliche Plugins im Betrieb, deren Kompatibilität zunächst einmal geprüft werden müsste.

Das gute ist doch schonmal, dass die Api diese Antwort sendet. Also ist die schonmal erreichbar. Wie übermittelst du nun die Daten?
GET, POST, PUT, UPDATE, welche art des AUTH, Body oder Header etc. Gib mal Beispiel.

Vielleicht werden ja gar keine Anmeldedaten übermittelt. Womöglich die Schnittstelle nicht korrekt.

Das ist tatsächlich auch meine Vermutung, also dass die Anmeldedaten nicht übermittelt werden . Nur eben serverseitig. Oder wie es auf der veralteten Seite zu Shopware 4 steht: dass der Authorization-Header nicht an PHP weitergegeben wird.

Wenn ich einen Endpoint über den Browser aufrufe, also ohne Schnittstelle, klappt’s ja auch nicht. Oder eben über Postman, Advanced Rest Client und andere - ja, alle getestet :wink:

Vergiss mal den alten Quatsch mit SW 4 und gibt uns mal ein Hinweis (wie bereits @brettvormkopp schon vorgeschlagen) wie du die Daten an den Shop übermittelst. Wir werden hier nicht fertig und Raten nur im Kreis. Das führt zu nichts.

Das sagte ich doch bereits mehrfach. Z.B. über den Browser: Aufruf von diedomain.de/api/version

Aber eine weitere Analyse ist nun nicht mehr notwendig: Der „Quatsch mit SW4“ hat mich zur Lösung gebracht. In der .htaccess aus dem root-Verzeichnis fehlte dieser Eintrag:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Habe ihn hinzugefügt, nun läuft’s.

Trotzdem Danke an alle, die sich an diesem Thread beteiligt haben!

Wieso über den Browser? Das ist eher ungewöhnlich. Probier das doch mit dem Programm „Postman“. Und die Zeile in der htaccess ist doch eigentlich Standard … komisch … Aber schön wenn es jetzt doch geht :slight_smile:

Vielleicht nicht Standard bei Shopware 5.5.10? Ich weiß es nicht. Ich habe den Shop allerdings auch nicht aufgesetzt.

Natürlich nutzt der Kunde eigentlich eine Schnittstelle von uns, da aber die API-Verbindung damit fehlschlug, war bei Lösungsversuchen der Weg zum Testen über den Browser der schnellste. Dafür musste die Schnittstelle ja nicht einmal installiert sein.

Habe mal eben kurz nachgeschaut, in der 5.5.10 ist das drin. Der Shop ist vermutlich doch älter als gedacht :slight_smile:

Wird diese Datei bei einem Shop-Update überschrieben? Ist hier wohl nicht passiert.