REST API Schnittstelle - 401 unauthorized

Thema wurde von Anonymous, 24. März 2016 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Hallo zusammen,

    wenn ich testhalber die folgende rest api url aufrufe:

    (Link nur für registrierte Nutzer sichtbar.)

    und mich mit den demo shop zugangsdaten anmelde: admin@shop.de, 12345, dann sehe ich den korrekten JSON response im browser!

    Versuche ich das ganze mit unserem live-shop und den korrekten Admin-Zugangsdaten, bekomme ich eine 401 unauthorized Fehlermeldung.

    Was muss ich tun, damit ich den REST API in unserem Shop aufrufen kann?

    Danke!
     
  2. Daniel W. (Gambio)

    Daniel W. (Gambio) Gambio GmbH

    Registriert seit:
    17. Juli 2012
    Beiträge:
    289
    Danke erhalten:
    108
    Danke vergeben:
    85
    Solange die Zugangsdaten korrekt sind, sollte das eigentlich problemlos laufen.
    Kann in meinen diversen Testshops kein generelles Problem feststellen.
    Wenn du bei uns im Kundenportal Zugangsdaten hinterlegst, können wir uns das mal angucken. So wird es schwierig.
     
  3. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.884
    Danke erhalten:
    617
    Danke vergeben:
    113
    Hast Du im Testshop die SEO-Urls deaktiv und im Liveshop aktiv?

    Könnte mir gut vorstellen ohne mir das genauer anzuschauen, dass im Liveshop eventuell die .htaccess das verursacht.
     
  4. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Guter Hinweis. Das kann natürlich an der .htaccess liegen sein. Allerdings sind im Gambio Shop und in unserem Live Shop SEO Urls aktiv.... Ich habe testhalber einen anderen Admin angelegt. Geht leider trotzdem nicht... Hat sonst niemand das Problem?
     
  5. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.884
    Danke erhalten:
    617
    Danke vergeben:
    113
    Kannst Du trotzdem mal deine .htaccess posten?
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    ExpiresActive On
    ExpiresByType text/javascript A21600
    ExpiresByType text/js A21600
    ExpiresByType application/javascript A21600
    ExpiresByType text/html A900

    ExpiresByType text/css A14400
    ExpiresByType image/gif A2592000
    ExpiresByType image/jpg A2592000
    ExpiresByType image/jpeg A2592000
    ExpiresByType image/png A2592000

    <ifModule mod_headers.c>
    Header set X-Content-Type-Options: nosniff
    </ifModule>

    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} ^(.*)\.(php|css|js|gif|jpg|jpeg|png)$ [NC]
    RewriteRule ^(.+) - [L]

    RewriteCond %{REQUEST_URI} (.*)?/admin/(.*)
    RewriteRule ^(.+) - [L]

    RewriteCond %{REQUEST_URI} (.*)?/images/(.*)
    RewriteRule ^(.+) - [L]

    RewriteCond %{REQUEST_URI} (.*)?/templates/(.*)
    RewriteRule ^(.+) - [L]

    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^(.+) - [L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^(.+) - [L]

    RewriteCond %{REQUEST_FILENAME} -l
    RewriteRule ^(.+) - [L]

    ##boosted CONTENT
    RewriteRule (^[a-z]{2})/(.*/)?info/([A-Za-z0-9_-]+)\.html.* shop_content.php?language=$1&gm_boosted_content=$3&%{QUERY_STRING} [PT,L]
    RewriteRule (.*/)?info/([A-Za-z0-9_-]+)\.html.* shop_content.php?gm_boosted_content=$2&%{QUERY_STRING} [PT,L]

    ##boosted PRODUCTS
    RewriteRule (^[a-z]{2})/(.*/)?([A-Za-z0-9_-]+)\.html product_info.php?language=$1&gm_boosted_product=$3&%{QUERY_STRING} [PT,L]
    RewriteRule (.*/)?([A-Za-z0-9_-]+)\.html product_info.php?gm_boosted_product=$2&%{QUERY_STRING} [PT,L]

    ##boosted CATEGORIES
    RewriteRule (^[a-z]{2})/(.*/)?([A-Za-z0-9_-]+)/?.* index.php?language=$1&gm_boosted_category=$3&%{QUERY_STRING} [L]
    RewriteRule (.*/)?([A-Za-z0-9_-]+)/?.* index.php?gm_boosted_category=$2&%{QUERY_STRING} [L]
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Das Problem konnte leider noch nicht behoben werden. Die .htaccess scheint den Fehler nicht zu verursachen.
     
  8. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Dein Webserver ist ein Nginx, der bei uns ist ein Apache. Der Apache ist hier der pflegeleichte Kandidat, alles was der wissen muss kann aus .htaccess Dateien steuern, während Nginx die nicht liest. Das Apache Konzept ist da flexibel, dafür sagen die Nginx Leute deren Variante von völliger Ignoranz ist performanter. Da die Anweisungen grösstenteils elementar wichtig sind, muss der Serverbetreiber auf Zack sein, denn mann kann die ganzen Dinge nur aus der eigentlichen Konfiguration des Webservers erledigen, darum rate ich jedem Laien von Nginx ab. Das ist hier aber noch nichtmal kriegsentscheidend, dein Problem ist eher:

    Für die API müssen die Auth Token vom Webserver an PHP durchgereicht werden, das haben die meisten Leute mit Nginx nicht im Griff. Stichwörter ist hier Basic Auth bei PHP per fast-cgi. Einrichten kann das auch hier nur der Serververwalter.
     
  9. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Vielen Dank, ich habe eine Anfrage an Estugo gestellt.
     
  10. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Anbei die Antwort:

    "bei uns wird der NGINX nicht als Webserver eingesetzt, sondern lediglich als
    Reverse-Proxy. Der ausführende Webserver ist ein Apache-Webserver, weswegen
    auch beispielsweise .htaccess-Dateien ganz normal funktionieren.

    Das Problem ist, dass die derzeitig von Gambio verwendete Authentifizierung
    nur mit "mod_php" funktioniert und auf moderneren Webservern mit "fast-cgi" zu
    Problemen führt. Dies hatte ich bereits vor einem Monat mit Herrn xxx
    von Gambio besprochen, das Problem sollte dort also bekannt sein und wird laut
    Aussage von Gambio in einer kommenden Version des Shops/der API angepasst.

    Als Workaround habe ich folgenden Code oben in Ihrer .htaccess-Datei
    eingefügt:

    SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0

    Diesen hatte ich von Herrn xxx erhalten, bei einem anderen Kunden
    funktionierte anschließend die Authentifizierung für die API."
     
  11. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Ah, ich hatte nur den Nginx gesehen, dass ist das Ding dass auf Browseranfragen nach aussen reagiert.

    Estugo hat insofern recht, als dass die API nochmal um weitere Authentifizierungsmechanismen ergänzt werden soll, das ist aber noch etwas hin, ein vermutetes halbes Jahr. In deinem Fall ist das aber mit der Direktive egal, denn dein Problem sollte so vom Tisch sein.
     
  12. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Mit dem Workaround funktioniert alles wunderbar.
     
  13. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.884
    Danke erhalten:
    617
    Danke vergeben:
    113
    Hatte das Ganze leider nicht mehr auf dem Schirm, aber die Antwort und Lösung war die Modifizierung der .htaccess-Datei. Freut mich das es läuft! :)