Inhaltsverzeichnis
Aufruf (Request)
Der Aufruf der REST-Schnittstelle ähnelt bei jedem OSB-Dienst und hat folgenden Aufbau der URL:
https://www.websale.de/api/SERVICEID/ACTION
Parameter | Bedeutung |
---|---|
SERVICEID | Stellt den OSB-Dienst dar. Dies ist nicht notwendigerweise die AppID des Dienstes. |
ACTION | Wir dem OSB-Dienst als Parameter übergeben und der Dienst reagiert dann entsprechend reagieren. Wenn ein Dienst eine Aktion nicht kennt, sollte immer ein HTTP-Fehlercode 400 (Bad Request) zurückgegeben werden. |
Beim Aufruf der URL wird der entsprechende Dienst mit folgenden Parametern aufgerufen:
"isrest=yes&action=ACTION"
Damit die URL funktioniert, wird von der WEBSALE Technik eine entsprechende RewriteRule eingebunden:
<IfModule mod_rewrite.c> RewriteEngine on ... RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/api/ID/(.*) /cgi/APP/APP.cgi?isrest=yes&action=$1&%1 [PT] ... </IfModule>
Authentifizierung
Es ist bei jedem OSB-Dienst wichtig, dass der User sich zuerst authentifiziert und dem Aufruf einen Token mitgibt. Wie ein Token beim Authentserver erzeugt wird, ist in der Dokumentation "REST Authentifizierung" beschrieben:
Token
Der Token ist ein “JSON Web Token” (JWT) und besteht aus 3 Teilen:
Header: Hier steht, mit welchem Algorithmus die Signatur verschlüsselt ist sowie die Art des Token.
Payload: Hier stehen alle Informationen, die bei einem CGI-Aufruf im Context stehen. Zusätzlich ist ein Timestamp enthalten, der angibt, wie lang der Token gültig ist.
Signatur: Die Signatur ist ein verschlüsselter Hash, der aus dem Header und dem Payload besteht. Das dazugehörige Passwort steht in der dbcgi.cfg unter Global → RestPassword.
Für weitere Informationen zu JWT kann die offizielle Webseite besucht werden: https://jwt.io
REST-Anfrage an Dienst
Jeder Dienst mit einer REST-Schnittstelle muss über eine spezielle REST-kompatible URL aufrufbar sein.
Dieser Aufruf verweist auf die entsprechende CGI. Zudem muss im Request-Header zusätzlich der Token angegeben werden.
X-Authorization: Bearer TOKEN
Fehlerbehandlung
Wenn ein Problem entsteht, muss ein zum Vorfall passender HTTP-Code zurückgegeben werden.
So muss immer der HTTP-Code 401 zurückgegeben werden, wenn der User auf eine Ressource ohne einen gültigen Token zugreifen möchte.
Shopzugriff
Da auch Requests aus dem Shop ausgeführt werden, wird ein für den Zweck benötigter User existieren. Dieser User muss zwingend Adminberechtigungen haben.
Um Missbrauch vorzubeugen, muss dieses Konto spezielle Regeln befolgen:
Das Konto darf nur vom internen System auf die REST-Schnittstelle zugreifen.
Das Konto darf nur über das REST-Interface mit dem AuthentServer kommunizieren.
Damit die Regeln befolgt werden, muss eine Konfigurationsdatei rest.cfg erstellt werden, die folgende Sektion beinhaltet:
<+REST-User> PersNr = 0000000 # Personennummer des Users AllowBrowserLogin = no # yes/no, Flag ob Konto sich über Browser im OSB einloggen kann +IPAllowed = 123.123.123.123 # IP-Adresse über die Request erlaubt ist +IPAllowed = 123.123.124.* # Möglich ein IP-Block anzugeben (* nur letzter Block möglich) </+REST-User>
tt
Add Comment