Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mit Rest-Komponenten auf Shopware-API zugreifen (https://www.delphipraxis.net/189866-mit-rest-komponenten-auf-shopware-api-zugreifen.html)

Guido R. 1. Aug 2016 18:01

Mit Rest-Komponenten auf Shopware-API zugreifen
 
Hallo !
Ich habe mir eine Testumgebung mit Shopware 5.X geschaffen und möchte auf dessen Rest Schnittstelle zugreifen.
Dazu habe ich einen Benutzer mit den entsprechenden Rechten angelegt. Im Webbrowser erhalte ich, nach Eingabe von Username und dem von Shopware erstellten Key, für die entsprechende Adresse (z.B. meinshop.de/api/articles) das erwartete Ergebnis im JSON-Format.

Unter Delphi komme ich mit den REST Client Komponenten aber an der Authentifizierung nicht vorbei.
Gleiches gilt für den Rest Debugger. Auch dort erhalte ich als Antwort nur :
Code:
{
  "success":false,
  "message":"Invalid or missing auth"
}
egal welche Einstellungen ich auch für die Authentifizierung probiert habe.

Hat dies bereits jemand zum laufen gebracht? Für etwas Hilfe wäre ich hier sehr dankbar!

Guido

RWarnecke 1. Aug 2016 19:19

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Schau mal hier, vielleicht hilft ja das weiter. Ist zwar nur von Shopware 4.

himitsu 2. Aug 2016 09:23

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Also, der Doku zu Folge wäre rein garnichts zu beachten,
https://developers.shopware.com/deve...-in-your-own-a
https://developers.shopware.com/deve...the-api-client
aber sowas schonmal probiert? (hilft aber scheinbar nur, wenn PHP als CGI eingebunden ist)
http://internet-marketing-dresden.de.../vorbereitung/ > Probleme mit der Authentifizierung mit der REST API

und
http://www.delphipraxis.net/171695-z...-idhttp-3.html

Guido R. 2. Aug 2016 13:09

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Hallo !

Die Anleitung von Franke OM hatte ich im Prinzip schon umgesetzt. Auch bei einem Strato vServer ist
Code:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
erforderlich um überhaupt Zugriff auf die API zu bekommen.
Selbst wenn ich nur den Rest-Debugger verwende (URL, Ressource "articles", Authentifizierung "Basic" mit Username und Key) erhalte ich "Invalid or missing auth".
rufe ich die selber URL/articles auf und bestätige mit Username und Key, so erhalte ich eine korrekte Antwort...

In dem Beitrag hier auf der DP wird darauf verwiesen, dass es sich bei der Authentifizierungsmethode um "Digest" handelt. Wie könnte ich das denn mit den Rest-Komponenten umsetzen?

Daniel 2. Aug 2016 13:11

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Schalte doch mal einen Proxy wie Fiddler dazwischen.
Damit kannst Du Dir Anfrage und Antwort des Browsers und Deines Programms im Klartext anzeigen lassen. Auf diese Weise kommt man so einem Problem gut auf die Spur.

Guido R. 2. Aug 2016 15:39

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Fiddler war schonmal eine gute Idee, insofern dass es bestätigt hat, dass es sich um eine Digest-Auhorization handelt...
Code:
No Proxy-Authorization Header is present.

Authorization Header is present: Digest username="api",realm="Shopware REST-API",nonce="d7cbb7df02fd50d7c3212ab40e4e5396",uri="/shopware/api/articles",cnonce="8f18815a16791289452285734f17210a",nc=00000002,algorithm=MD5,response="a523ab46510c967397f2638b2bc4987c",qop="auth",opaque="d75db7b160fe72d1346d2bd1f67bfd10"
Nur wie bekomme ich das jetzt den Rest-Komponenten beigebracht ??? :gruebel:

Daniel 2. Aug 2016 15:47

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Du müsstest bei Fiddler bei Deinem Web-Browser mindestens zwei Requests sehen. Zuerst fragt der Web-Browser OHNE Authentifizierungsdaten an. Er bekommt dann eine Antwort mit dem Statuscode 401, aber auch mit einem vom Server erzeugten Wert. Diesen verfuddelt der Client dann mit Benutzername und Passwort (ala
Delphi-Quellcode:
MD5(username+';'+servervalue+';'+password)
) und sendet das dann als Anmeldung zurück.

Diesen Ablauf wirst Du mit den REST-Komponenten nachbauen müssen. Die OAuth-Geschichten zum Beispiel sind ja auch ein Pingpong zwischen Client und Server. Ich würde mal schauen, ob man im Netz zum Beispiel für PHP oder dgl. ein paar Beispiele findet. Ich habe den Wikiedia-Artikel nur überflogen, aber das scheint lediglich eine Fleißaufgabe zu sein, da alle Algorithmen in Delphi vorhanden sind.

Daniel 2. Aug 2016 16:18

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
https://evertpot.com/223/

Das sieht ganz gut aus.

himitsu 2. Aug 2016 16:21

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Zitat:

No Proxy-Authorization Header is present.
Das klingt doch nach dem Grund, warum es nicht mit Proxy-Authorization geht?
Der kann den Header nicht mehr setzen, da der Header schon vorhanden und gesendet ist.

Es klingt zumindestens nach dem einen viel zu beliebten Problem in der PHP-Welt. :stupid:
Zitat:

Zitat von x-beliebiges Beispiel
Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:12) in /some/file.php on line 23


mquadrat 3. Aug 2016 06:34

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Bei den Indys muss man Digest explizit einschalten. Ich kann mal nachschauen, wenn ich im Büro bin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz