SwKaBeSwKaBe MemberComments: 3 Received thanks: 0 Member since: January 2013 edited July 2013
Hallo,
ich habe die Version 4.0.5 installiert (Shared Hosting 1&1) und betreibe sie soweit problemlos mit php 5.4.11 als CGI/FastCGI.
Zur Nutzung der API habe ich einen Nutzer (local_admin, aktiviert und mit Key) angelegt und den einfachen Authentifizierungstest (wie im Tutorial) durchgeführt.

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

Daraufhin habe ich die htaccess-Datei erweitert:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
um php den Zugriff auf die Anmeldedaten zu ermöglichen - leider ebenfalls ohne Erfolg.

Mit einem kleinen Testscript habe ich festgestellt, dass bei meinem Hostinganbieter die oben per .htaccess "weitergeleiteten" Daten in der Servervariablen $_SERVER gespeichert werden, hier also zusätzlich der Präfix 'REDIRECT' genutzt wird.

Meine Frage:
Kann die Rest API auf 'REDIRECT_HTTP_AUTHORIZATION' zugreifen und so die Anmeldung erfolgreich durchführen oder können/müssen hier Anpassungen an der Software vorgenommen werden?

Leider sind die Einflussmöglichkeiten bezüglich der "Serverumgebung" sehr beschränkt, daher würde ich mich über einen Tipp oder sogar eine Lösung bei der Anwendung sehr freuen.

Comments

  • Benjamin CremerBenjamin Cremer EmployeeComments: 206 Received thanks: 100 Member since: April 2012
    Hallo,

    du könntest es mit Folgendem Code-Snippet am Anfang der shopware.php versuchen:
    if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
        list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6)));
    }
    
    Ich habe grade keine Resourcen um dies zu testen, aber um eine kurze Rückmeldung würde ich mich freuen ;)

    Viele Grüße,
    Benjamin Cremer :shopware:
  • SwKaBeSwKaBe MemberComments: 3 Received thanks: 0 Member since: January 2013
    Hallo Benjamin,
    vielen Dank für die schnelle Antwort, leider konnte ich durch die Modifikation von shopware.php das Problem nicht lösen. Auch das testweise Einfügen in:

    - /engine/Library/Symfony/Component/HttpFoundation/Request.php
    - /engine/Library/Symfony/Component/HttpFoundation/ServerBag.php
    - /engine/Library/Zend/Cache/Backend/Xcache.php

    konnte nicht helfen. Ist es vielleicht eine Idee, in Richtung curl zu forschen?

    Beste Grüße
    Karsten
  • Benjamin CremerBenjamin Cremer EmployeeComments: 206 Received thanks: 100 Member since: April 2012
    Hallo Karsten,

    über die Client-Seite, also Curl wirst du das Problem nicht lösen können.

    Für die Verwendung von Apache + mod_fcgid ist eine Konfiguration auf dem Server notwendig.

    Viele Grüße,
    Benjamin Cremer :shopware:
  • SwKaBeSwKaBe MemberComments: 3 Received thanks: 0 Member since: January 2013
    Hallo,
    ich hatte bereits alle im Tutorial beschriebenen Konfigurationsvarianten sowie zusätzlich 'RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]' getestet - leider erfolglos.

    Um sicher zu gehen, dass nicht die Installation betroffen ist, habe ich alle Dateien und DB-Tabellen gelöscht und das ganze Paket neu installiert. Dann wieder alle beschriebenen Serverkonfigurationsvarianten getestet, aber es klappt weiterhin nicht.

    Aber:
    Ich kann bestätigen, dass die o.g. RewriteRule greift. Mein php-Testscript konnte auf die damit im Environment vorhandenen Authentifizierungsdaten aus $_SERVER lesen und darstellen. Sie sind also da. :-) Die Software ist natürlich viel komplexer, deshalb sind meine Möglichkeiten beinahe erschöpft. Schade, die Schnittstelle wäre eine Voraussetzung für das Projekt gewesen.

    Vielen Dank soweit für die Hilfe! Vielleicht hat jemand noch eine Idee?
  • greyhoundgreyhound MemberComments: 1 Received thanks: 2 Member since: March 2013
    Hallo,

    da ich gerade auf dasselbe Problem gestoßen bin, hier ein Workaround, der bei mir funktioniert:

    Wie von Benjamin angeregt fügt man in der shopware.php folgendes hinzu:
    if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])){
        $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
    }
    
    Wie SwKaBe schon schrieb muss in der .htaccess Datei noch folgende Zeile ergänzt werden (am besten hinter der "RewriteBase" Zeile, egal ob sie auskommentiert ist):
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    Das Authentifizierungsmodul verwendet offenbar den HTTP_AUTHORIZATION Header, den 1&1 aber nach dem Rewrite in der .htaccess Datei offenbar in REDIRECT_HTTP_AUTHORIZATION umbenennt. Wenn man den auf diese Weise wieder als HTTP_AUTHORIZATION verfügbar macht, dann klappt die Authentifizierung.

    Grüße,
    Robert
  • zauberschuppen2478zauberschuppen2478 MemberComments: 15 Received thanks: 0 Member since: July 2013
    Super, genau das habe ich gebraucht :thumbup:
Sign In or Register to comment.