Hallo zusammen, ich stehe aktuell vor folgendem Problem: Ich entwickle lokal eine Applikation (PHP) die auf einzelne Artikel-Daten aus SW5 zurückgreifen soll. Um updatefähig zu bleiben, möchte ich die REST-API nutzen und nicht direkt auf die Datenbank zugreifen. Ich habe gemäß der Anleitung unter https://developers.shopware.com/develop … /rest-api/ den API-Client eingebunden. Leider erhalte ich jedoch den Fehler {“success”:false,“message”:“Invalid or missing auth”}. Wenn ich per direktem Aufruf im Browser und dann der Eingabe der Zugangsdaten den Aufruf versuche, funktioniert es. Also ging ich davon aus, dass es am Server bzgl. der Authentifizierungs-Weiterleitung liegen muss. Wenn ich einen Request mit Hilfe der Seite www.hurl.it setze, funktioniert dies aber ohne Probleme. Nach 3 Stunden testen und googeln bin ich nun leider mit meinem Latein am Ende und erhoffe mir von Euch den ein oder anderen Tipp oder im besten Fall sogar die Lösung. Vielen Dank schon mal! Gruß Bernhard
Evtl. hilft dir folgender Eintrag in der .htaccess RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] Mit freundlichen Grüßen Frank
Hallo Frank, vielen Dank für deine schnelle Antwort. In Shopware 5 enthällt die .htaccess bereits standardmäßig folgende Definition: ... # Fix missing authorization-header on fast\_cgi installations RewriteRule .\* - [E=HTTP\_AUTHORIZATION:%{HTTP:Authorization},L] ...
Gruß Bernhard
Guten Tag
Wir stehen momentan vor demselben Problem.
Mit der blanken Installation von der Version 5.2.6 und als Erstes den API-Benutzer erstellt und aktiviert.
Weder der direkte Link (www…/api/articles) oder über API wird die Authorisation akzeptiert.
Wenn man aber in /engine/Shopware/Plugins/Default/Core/RestApi/Bootstrap.php folgendes entfernt, funktioniert es:
/** @var $auth Shopware_Components_Auth */
$auth = $this->get('auth');
$result = $auth->authenticate();
if (!$result->isValid()) {
$request->setControllerName('error');
$request->setActionName('noauth');
return;
}
$identity = $result->getIdentity();
$db = $this->get('db');
$select = $db->select()
->from('s_core_auth')
->where('username LIKE ?', $identity['username']);
$user = $db->query($select)->fetchObject();
if (!empty($user->roleID)) {
$user->role = $this->get('models')->find(
'Shopware\Models\User\Role',
$user->roleID
);
}
(Dies zu entfernen macht natürlich nicht Sinn, denn so kann jeder ohne Benutzer die API zugreifen…)
Woran könnte dies liegen?
Evtl. hilft dir folgender Eintrag in der .htaccess
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Mit freundlichen Grüßen
Frank
Genau das sollte probiert werden, also ohne „L“ und der Eintrag sollte auch direkt hinter dem RewriteEngine on stehen, siehe auch
http://stackoverflow.com/questions/4947548/what-does-this-this-http-authorization-rewriterule-do#comment-52611789