Zwischen Online-Shop und ERP fließen die sensibelsten Daten eines Handelsunternehmens: Bestellungen, Kundenstammdaten, Preise, Lagerbestände und Zahlungsinformationen. Trotzdem laufen viele dieser Schnittstellen bis heute über einen einzigen statischen API-Schlüssel oder über Basic Authentication mit einem fest hinterlegten Passwort. Was pragmatisch beginnt, wird mit wachsender Angriffsfläche und steigendem Compliance-Druck teuer. Kompromittierte Zugangsdaten zählen zu den kostspieligsten Einfallstoren überhaupt: Ein Datenleck kostet Unternehmen weltweit im Schnitt 4,44 Millionen US-Dollar (IBM Cost of a Data Breach 2025), und fehlerhafte Authentifizierung rangiert als Broken Authentication auf Platz 2 der OWASP API Security Top 10 (OWASP). Zugleich registrierte das BSI zuletzt rund 309.000 neue Schadprogramm-Varianten pro Tag (BSI). Dieser Beitrag zeigt, wie sich die API-Schicht zwischen ERP und Shop mit OAuth 2.0 absichern lässt: mit dem Client-Credentials-Flow, sender-constrained Tokens per mTLS und DPoP, kurzen Token-Laufzeiten, Rotation und Scope-Minimierung -- orientiert an der aktuellen Sicherheitsempfehlung IETF RFC 9700.
Warum statische API-Keys und Basic Auth zum Risiko werden
Der Reiz eines statischen API-Schlüssels liegt auf der Hand: Er ist in Minuten eingerichtet, in jeden HTTP-Aufruf kopiert und funktioniert sofort. Genau diese Einfachheit macht ihn zum Problem. Ein solcher Schlüssel ist ein Dauerausweis ohne Ablaufdatum. Er liegt im Klartext in Konfigurationsdateien, in Skripten, in der Zwischenablage von Entwicklern und nicht selten auch in Versionsverwaltungen, in die er versehentlich eingecheckt wurde. Wer ihn einmal besitzt, kann die Schnittstelle unbegrenzt ansprechen -- ohne dass jemand bemerkt, dass der Aufrufer nicht mehr der legitime ist.
Die wirtschaftliche Dimension ist erheblich. Das durchschnittliche Datenleck kostet Unternehmen weltweit 4,44 Millionen US-Dollar, nach 4,88 Millionen im Vorjahr (IBM Cost of a Data Breach 2025). In den USA liegt der Durchschnitt sogar bei 10,22 Millionen US-Dollar (IBM Cost of a Data Breach 2025). Entscheidend für Schnittstellen ist weniger der Durchschnitt als die Dauer: Bis ein Vorfall erkannt und eingedämmt ist, vergehen im Mittel 241 Tage (IBM Cost of a Data Breach 2025). Ein statischer Schlüssel, der in dieser Zeit unbemerkt missbraucht wird, öffnet die Schnittstelle über Monate. Das BSI beschreibt kompromittierte Zugangsdaten und Identitätsdiebstahl als anhaltend wachsende Bedrohung, insbesondere gegen Cloud-Infrastrukturen (BSI).
Der statische Schlüssel ist ein Dauerausweis
OWASP führt fehlerhafte Authentifizierung als API2:2023 Broken Authentication auf Platz 2 der API Security Top 10 (OWASP). Dazu zählen ausdrücklich schwach geschützte Authentifizierungs-Endpunkte, die sich per Brute Force oder Credential Stuffing angreifen lassen, sowie die unsichere Speicherung und Verwaltung von Tokens (OWASP). Auf Platz 1 steht die fehlerhafte Objekt-Autorisierung, Broken Object Level Authorization, bei der eine Schnittstelle Datensätze allein anhand einer übergebenen ID ausliefert (OWASP). Beide Risiken haben eine gemeinsame Wurzel: zu viel Vertrauen in ein einziges, langlebiges Geheimnis. Wie sich diese Schnittstellen im größeren regulatorischen Rahmen einordnen, behandelt unser Beitrag zur NIS2-konformen Absicherung von ERP-Schnittstellen -- hier geht es um die konkreten Authentifizierungsmechanismen darunter.
OAuth 2.0 und der Client-Credentials-Flow für Maschinen
OAuth 2.0 ist der etablierte Standard für delegierte Autorisierung. Statt ein dauerhaftes Passwort weiterzugeben, holt sich ein Client bei einem Autorisierungsserver ein zeitlich begrenztes Access Token ab und legt dieses bei jedem Aufruf der Schnittstelle vor. OAuth kennt mehrere Abläufe, sogenannte Grant Types, je nachdem, ob ein Mensch im Browser beteiligt ist oder zwei Systeme direkt miteinander sprechen. Für die Kommunikation zwischen Shop, Middleware und ERP -- also Maschine zu Maschine ohne interaktiven Nutzer -- ist der Client-Credentials-Flow vorgesehen.
Warum Client-Credentials und nicht der Authorization-Code-Flow
Im Client-Credentials-Flow authentifiziert sich der Client direkt am Token-Endpunkt des Autorisierungsservers und erhält ein Access Token zurück. Die Anmeldung erfolgt nicht mehr über ein Passwort im Klartext, sondern idealerweise über ein Client-Zertifikat. So sieht ein solcher Token-Request im Kern aus:
POST /oauth/token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&scope=orders:read inventory:write
# Antwort: kurzlebiges Access Token mit engem Scope,
# gebunden an das Client-Zertifikat (mTLS) oder an einen DPoP-SchlüsselDer zentrale Ort für diese Logik ist in der Praxis die Middleware: Sie holt Tokens ab, erneuert sie rechtzeitig, hält Zertifikate vor und setzt die Absicherung einheitlich durch, statt sie in jeder einzelnen Punkt-zu-Punkt-Verbindung erneut zu implementieren. Das Access Token, das der Server ausstellt, ist bewusst kurzlebig und trägt nur die Berechtigungen, die der jeweilige Prozess wirklich braucht.
Bearer-Tokens und ihr Grundproblem
Ein einfaches Access Token ist zunächst ein Bearer Token -- ein Inhaber-Token. Der Name ist Programm: Wer das Token besitzt, darf es benutzen, ganz gleich, ob er der rechtmäßige Client ist oder ein Angreifer, der es abgefangen hat. Der Server prüft nur, ob das Token gültig ist, nicht, wer es vorlegt. Damit hat ein Bearer Token denselben konzeptionellen Schwachpunkt wie ein statischer Schlüssel, nur mit kürzerer Lebensdauer. Gerät es in falsche Hände -- durch ein Leck in Logdateien, einen kompromittierten Proxy oder eine fehlerhafte Fehlermeldung -- lässt es sich bis zum Ablauf ungehindert weiterverwenden.
Ein Bearer Token ist wie Bargeld: Wer es findet, kann es ausgeben. Sender-constrained Tokens verwandeln dieses Bargeld in einen personalisierten Scheck, der nur mit dem passenden Ausweis gilt.
Sender-constrained Tokens: mTLS und DPoP
Genau hier setzt die aktuelle Sicherheitsempfehlung an. RFC 9700, die seit Januar 2025 gültige Best Current Practice für OAuth-2.0-Sicherheit, empfiehlt, Access Tokens an ihren Absender zu binden (IETF RFC 9700). Ein solches sender-constrained Token ist nur nutzbar, wenn der Aufrufer zusätzlich den Besitz eines bestimmten Geheimnisses nachweist -- eines privaten Schlüssels oder eines Zertifikats. Ein gestohlenes Token allein bringt einem Angreifer dann nichts mehr. RFC 9700 nennt zwei standardisierte Verfahren dafür: Mutual TLS nach RFC 8705 und Demonstrating Proof of Possession, kurz DPoP, nach RFC 9449 (IETF RFC 9700).
Bei mutual TLS weisen sich beide Seiten mit Zertifikaten aus -- nicht nur der Server gegenüber dem Client, sondern auch der Client gegenüber dem Server. Das ausgestellte Token wird an den öffentlichen Schlüssel des Client-Zertifikats gebunden; der Resource Server akzeptiert es nur über dieselbe zertifikatsgesicherte Verbindung. DPoP verfolgt dasselbe Ziel auf Anwendungsebene: Der Client erzeugt pro Anfrage einen signierten Nachweis mit seinem privaten Schlüssel, den der Server gegen den im Token hinterlegten Schlüssel prüft. Beide Verfahren machen ein abgefangenes Token wertlos, unterscheiden sich aber in Infrastruktur und Einsatzprofil.
| Aspekt | mutual TLS (RFC 8705) | DPoP (RFC 9449) |
|---|---|---|
| Bindung an | Client-Zertifikat | Öffentlich-privates Schlüsselpaar |
| Ebene | Transportschicht (TLS) | Anwendungsschicht (HTTP-Header) |
| Infrastruktur | Zertifikatsverwaltung, PKI nötig | Ohne Client-PKI umsetzbar |
| Typischer Einsatz | Server-zu-Server im Rechenzentrum | Clients ohne stabile Zertifikatsbasis |
| Nachweis pro | Verbindung | Einzelanfrage |
Für die klassische Server-zu-Server-Verbindung zwischen Middleware und ERP -- etwa einer SAP-Anbindung -- ist mutual TLS oft die naheliegende Wahl, weil beide Seiten ohnehin verwaltet werden und eine Zertifikatsstruktur besteht. DPoP spielt seine Stärke dort aus, wo eine ausgewachsene Client-PKI zu aufwendig wäre. Entscheidend ist nicht die Wahl des einen oder anderen Verfahrens, sondern dass Tokens überhaupt an ihren Absender gebunden werden, statt als frei übertragbares Bargeld durch die Systeme zu wandern.
Kurze Laufzeiten und Token-Rotation
Ein sender-constrained Token ist bereits deutlich schwerer zu missbrauchen. Die zweite Verteidigungslinie ist seine Lebensdauer. RFC 9700 empfiehlt kurzlebige Access Tokens, um das Zeitfenster zu begrenzen, in dem ein kompromittiertes Token überhaupt nützlich ist (IETF RFC 9700). Statt eines Schlüssels, der jahrelang gilt, erhält der Client ein Token, das nach Minuten verfällt und bei Bedarf neu abgeholt wird. Läuft ein Token aus, endet damit auch jeder unbemerkte Missbrauch automatisch.
Damit der Client nicht bei jedem Aufruf eine vollständige Neuanmeldung durchlaufen muss, kommen Refresh Tokens ins Spiel. Diese langlebigeren Tokens dienen ausschließlich dazu, neue Access Tokens zu beziehen. Weil sie damit selbst zum lohnenden Ziel werden, empfiehlt RFC 9700 die Refresh-Token-Rotation: Bei jeder Einlösung wird das alte Refresh Token entwertet und ein neues ausgegeben (IETF RFC 9700). Taucht ein bereits eingelöstes Refresh Token erneut auf, ist das ein klares Zeichen für einen Diebstahl -- und der gesamte Token-Strang lässt sich sofort sperren.
- Kurze Access-Token-Laufzeit: Minuten statt Monate begrenzen das Missbrauchsfenster auf ein Minimum.
- Refresh-Token-Rotation: Jede Einlösung entwertet das vorherige Refresh Token und deckt Wiederverwendung sofort auf.
- Sender-Constraining auch für Refresh Tokens: Auch das Refresh Token wird an mTLS oder DPoP gebunden, damit ein Diebstahl allein nichts nützt.
- Automatische Erneuerung: Die Middleware holt Tokens rechtzeitig und ohne Ausfall neu, sodass kurze Laufzeiten den Betrieb nicht stören.
- Sofortiger Widerruf: Einzelne Tokens oder Clients lassen sich gezielt sperren, ohne alle Integrationen anzuhalten.
Kurze Laufzeiten brauchen verlässliche Erneuerung
Scope-Minimierung nach dem Least-Privilege-Prinzip
Selbst ein kurzlebiges, gebundenes Token sollte nur so viel dürfen wie nötig. Genau das leisten Scopes: Sie schränken ein Token auf eine eng umrissene Menge von Rechten ein. Ein Prozess, der nur Bestellungen aus dem Shop ins ERP übertragen soll, braucht kein Token mit Vollzugriff auf Kundenstammdaten und Preise. RFC 9700 rät ausdrücklich dazu, Scopes minimal zu halten und nur die tatsächlich benötigten Berechtigungen zu vergeben (IETF RFC 9700). Dieses Least-Privilege-Prinzip begrenzt den Schaden, falls ein Token doch einmal kompromittiert wird.
Die Wirkung reicht bis zur fehlerhaften Objekt-Autorisierung, die OWASP auf Platz 1 der API Security Top 10 führt (OWASP). Ein eng gefasstes Token, das nur lesenden Zugriff auf Bestellungen erlaubt, kann keine Preise ändern und keine Kundendatensätze löschen, selbst wenn ein Angreifer es erbeutet. Scopes ersetzen die Berechtigungsprüfung pro Datensatz nicht, aber sie verkleinern die Angriffsfläche jedes einzelnen Tokens erheblich. Wie sich eine solche Berechtigungsschicht zentral bündeln lässt, zeigt der Vergleich REST-API und Middleware.
Ein Scope je Aufgabe
Jeder Integrationsprozess erhält ein eigenes Client-Profil mit exakt den Rechten, die seine Aufgabe erfordert -- nicht mehr.
Lesen und Schreiben trennen
Ein reiner Lesezugriff auf Bestellungen bekommt kein Schreibrecht. So kann ein kompromittiertes Token keine Daten verändern.
Kein Sammel-Client
Statt eines Universal-Zugangs für alle Schnittstellen erhält jede Anbindung ein eigenes, klar abgegrenztes Mandat.
# Bestellimport Shop -> ERP
scope=orders:read
# Bestands-Rückmeldung ERP -> Shop
scope=inventory:write
# Preispflege (getrennter Client, eigenes Zertifikat)
scope=prices:writeWas RFC 9700 konkret empfiehlt
RFC 9700 bündelt die aktuelle Sicherheitsempfehlung für OAuth 2.0. Die im Januar 2025 veröffentlichte Best Current Practice aktualisiert das Angreifermodell und fasst zusammen, was sich in Jahren praktischer Erfahrung als sicher erwiesen hat (IETF RFC 9700). Für eine ERP-Shop-Schnittstelle lassen sich die Kernpunkte in wenige, klare Regeln übersetzen: sender-constrained Tokens statt reiner Bearer Tokens, kurze Laufzeiten, Refresh-Token-Rotation, minimale Scopes und der Verzicht auf überholte Abläufe wie den Implicit-Flow und den Passwort-Grant.
| Aspekt | Gewachsene Anbindung | Nach RFC 9700 |
|---|---|---|
| Authentifizierung | Statischer API-Key oder Basic Auth | OAuth 2.0 Client-Credentials-Flow |
| Token-Typ | langlebiges Bearer-Geheimnis | sender-constrained per mTLS oder DPoP |
| Laufzeit | unbefristet, selten getauscht | kurzlebig, automatisch erneuert |
| Refresh | kein Konzept | rotierend, bei Wiederverwendung gesperrt |
| Berechtigung | meist Vollzugriff | minimale Scopes je Prozess |
| Widerruf | nur globaler Schlüsseltausch | gezielt pro Token oder Client |
Sicherheit als Eigenschaft der Schnittstelle, nicht als Nachtrag
Der Weg von statischen Keys zu OAuth 2.0
Der Weg von einer gewachsenen Anbindung mit statischem Schlüssel zu einer token-basierten Schnittstelle lässt sich schrittweise gehen, ohne den laufenden Betrieb zu unterbrechen -- als Teil einer geordneten Systemintegration. Am Anfang steht keine große Neuentwicklung, sondern eine Bestandsaufnahme: Welche Schnittstellen existieren, wie authentifizieren sie sich heute und welche Daten fließen über sie. Aus diesem Befund ergibt sich die Reihenfolge -- die Verbindungen mit den weitreichendsten Rechten und den sensibelsten Daten zuerst.
1. Bestand erfassen
Alle Schnittstellen, ihre Authentifizierung, ihre Datenklassen und ihre Berechtigungen aufnehmen. Statische Schlüssel und Basic-Auth-Verbindungen werden dabei sichtbar.
2. Autorisierungsserver einführen
Einen Token-Endpunkt bereitstellen, Client-Profile je Prozess anlegen und Zertifikate für mTLS oder Schlüssel für DPoP verteilen.
3. Schrittweise umstellen
Jede Anbindung einzeln vom statischen Schlüssel auf den Client-Credentials-Flow umziehen, parallel testen und den alten Zugang erst danach abschalten.
4. Überwachen und betreiben
Token-Nutzung, Fehlerquoten und Widerrufe laufend beobachten, damit kurze Laufzeiten und Rotation im Dauerbetrieb verlässlich funktionieren.
Wer die Absicherung in eine breitere Integrationsstrategie einbettet, findet weiterführende Ansätze in unserem Beitrag zur Anbindung der JTL-Wawi an den Onlineshop sowie zum digitalen Produktpass nach der ESPR -- beide zeigen, dass eine sichere API-Schicht die Grundlage für neue Datenflüsse ist. Wie sich Token-Nutzung, Fehlerquoten und Anomalien im laufenden Betrieb sichtbar machen lassen, vertieft der Beitrag zur Observability von Schnittstellen.
Sicherheit ist kein Feature, das man einer Schnittstelle nachträglich verpasst. Sie ist die Art, wie eine Schnittstelle Vertrauen organisiert -- von der ersten Zeile an.
Quellen und Studien