OBS/Kostenpflichtige Module/RESTServer

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
Kostenpflichtige Module

Internet-Shop
UPS
IMS Professional
SMS
Mehrlager-Verwaltung
Mehrsprachen Modul
Multilanguage Modul
EVA Marketing Tool
Termin-Projekte
Edifact-Schnittstelle
Backup Überwachung Email
OBS Geo Daten
DeliSprint / DPD
Filialen
Cashback
Moebelschnittstelle
Dokumenten Manager
DocuWare-Schnittstelle
OFML-Kalkulation
Versicherungsschaden
Gutschriftsanzeigen
Kameraverwaltung
DataInOut
OpenMasterData / IDS
Sammelpositionen


REST-Server

HINWEIS: Es handelt sich um ein kostenpflichtiges Modul. Die Schnittstelle muss ueber den OBS-Support aktiviert werden.

Der OBS REST-Server stellt einen frei konfigurierbaren HTTP/HTTPS-Dienst bereit, ueber den externe Teilnehmer auf Funktionen und Daten der OBS-Datenbank zugreifen koennen. Jeder Endpunkt wird ueber ein in OBS gepflegtes Pascal-Script bedient, die Rueckgaben erfolgen ausschliesslich im JSON-Format.

Aufruf des Moduls in OBS: Stammdaten -> Z Weitere Stammdaten -> REST-Server

Anwendungsbereiche

Typische Einsatzfaelle:

  • Bereitstellung von OBS-Daten fuer Webseiten (Steuerungsdaten, Statistiken, Verfuegbarkeiten)
  • Anbindung mobiler Endgeraete (Zeiterfassung, QR-Scanner, Lagerlisten)
  • Integration mit Drittsystemen (ERP, Shop, Buchhaltung) ueber JSON-APIs
  • Empfang von WebHook-Aufrufen externer Dienste (z.B. Bezahl-Callbacks)
  • Bereitstellung interner Microservices mit gegenseitiger Authentifizierung (mTLS)

Architektur im Ueberblick

Der REST-Server besteht aus mehreren aufeinander aufbauenden Bausteinen, die alle in OBS gepflegt werden:

Baustein Tabelle Zweck
Server RESTSRV_SERVER TLS-Profil + eigene HTTP-Server-Instanz, kann mehrfach existieren
Bindung RESTSRV_BINDINGS IP-Adresse + Port pro Server
Zugang RESTSRV_ACCOUNT API-Key, optionale Host- und CORS-Beschraenkung, optionale JWT-Konfiguration
Endpunkt RESTSRV_ENDPOINTS Skript, das die Anfrage bearbeitet, einem Server fest zugeordnet
Berechtigung RESTSRV_ACCESS Verbindet Zugang und Endpunkt
Protokoll RESTSRV_PROTO Laufende Ereignisse, Fehler, Audit-Eintraege
Statistik RESTSRV_STATS Aufrufzaehler, Antwortzeiten und HTTP-Status pro Endpunkt

Eine Anfrage durchlaeuft folgende Stationen:

  1. Rate-Limit-Pruefung (pro IP und global)
  2. Authentifizierung ueber den API-Key (Header apikey)
  3. CORS-Pruefung (sofern Origin-Header gesetzt)
  4. Optional: JWT-Pruefung (sofern fuer den Zugang aktiviert)
  5. Aufloesung von Endpunkt / Sub-URL / Version
  6. Pruefung der Berechtigung (Zugang -> Endpunkt)
  7. Ausfuehrung des Endpunkt-Skripts (oder WebHook-Antwort)
  8. JSON-Antwort, Statistik-Eintrag, Protokoll-Eintrag

Adressierung

Ein Endpunkt wird ueber drei Bestandteile angesprochen: Endpunkt-Name, optionale Sub-URL und Version:

http://[Hostadresse][:Port]/[Endpunkt][/Sub-URL]/[Version]

Beispiele:

https://api.meinserver.de/kalender/v1
https://api.meinserver.de/email/mein_konto/v1.0
https://api.meinserver.de/zeiterfa/mobile/v2

Durch die Versionierung kann eine Endpunkt-Funktionalitaet veraendert werden, ohne bestehende Konsumenten zu brechen.

Unterstuetzte HTTP-Methoden

Der Server akzeptiert die Methoden GET, POST, PUT, DELETE und PATCH sowie OPTIONS (CORS-Preflight, ohne Skript-Aufruf). Jede Methode wird im Endpunkt-Skript als gleichnamige Funktion implementiert. Siehe Scripting.

Sicherheitsmerkmale

Der REST-Server enthaelt eine Reihe fest verdrahteter Schutzmechanismen:

  • Rate-Limit: max. 10 fehlgeschlagene und 120 erfolgreiche Anfragen pro IP und 60 Sekunden, max. 600 Anfragen global pro 60 Sekunden. Beim Ueberschreiten wird HTTP 429 zurueckgegeben.
  • Body-Limit: max. 10 MB Request-Body, max. 1024 Zeichen pro Header- oder Query-Parameter.
  • Sensible Felder (password, token, secret, apikey, authorization, cookie, ...) werden in Protokoll-Ausgaben automatisch maskiert.
  • Reserviertes Praefix: Parameter-Namen mit Praefix _OBS_ koennen von aussen nicht gesetzt werden, sie sind fuer den Server reserviert (z.B. JWT-Claims).
  • Geblockte Header: authorization, cookie, proxy-authorization, x-forwarded-for, x-real-ip, apikey, api_key werden nicht an das Skript durchgereicht.
  • TLS: Bei Profilen mit aktivem TLS faehrt der Server ohne Zertifikat und Key nicht hoch. Plain-HTTP ist nur fuer ein dediziertes Debug-Profil moeglich.
  • mTLS (Mutual TLS): erzwingt, dass jeder Client ein gueltiges Client-Zertifikat vorlegt. Optional kann pro Zugang ein erwarteter Subject-DN hinterlegt werden.
  • DNS-Cache: Host-zu-IP-Aufloesungen fuer die Zugangs-Host-Pruefung werden 5 Minuten gecached.

Protokoll

Die Tabelle RESTSRV_PROTO enthaelt alle relevanten Ereignisse: erfolgreiche und abgelehnte Anfragen, TLS-/JWT-Fehler, Bindungs-Ereignisse, Skript-Fehler. Eintraege sind nach Datum, Uhrzeit und Host (IP oder Account-Name) sortiert. Das Protokoll ist die erste Anlaufstelle bei Stoerungen.

Statistik

Die Tabelle RESTSRV_STATS enthaelt eine Statistik aller bearbeiteten Anfragen mit Zugang, Endpunkt, Methode, HTTP-Status und Laufzeit in Millisekunden. Aufruf der Statistik:

  • Aus der Endpunkt-Liste: F8 zeigt die Statistik des markierten Endpunkts.
  • Aus der Zugaenge-Liste: F8 zeigt die Statistik des markierten Zugangs.

Konsole

Wird der REST-Server nicht als Dienst, sondern interaktiv gestartet, erscheint eine farbige Konsole mit Live-Log. Die wichtigsten Befehle:

Befehl Wirkung
show <n> Zeigt die Details zum Debug-Eintrag #n (z.B. Request-Header, Response-Body), JSON wird farbig formatiert
exit / quit Beendet den Server geordnet

Im Service-Modus (Windows-Dienst) ist die Konsole nicht sichtbar. Alle Eintraege landen dort ausschliesslich in der Tabelle RESTSRV_PROTO.

Weiterfuehrende Seiten