Zugangsdaten

Zugangsdaten in Orderport sind die Schlüssel zu zwei Richtungen Ihrer Pipeline:

  • Eingangs-Credentials (InboundCredential) entscheiden, wer Bestellungen an eine Pipeline einliefern darf.
  • Transport-Zugangsdaten entscheiden, wie sich Orderport beim Zielsystem ausweist.

Beide sind strikt pro Pipeline bzw. pro Transport und werden verschlüsselt gespeichert.

Eingangs-Credentials

Jede Pipeline kann beliebig viele Eingangs-Credentials haben – eine pro Partner, Shop oder Ariba-ANID. Auf der Pipeline-Detailseite sehen Sie die Liste, können neue anlegen, deaktivieren und löschen.

Vier Authentifizierungs-Typen

Typ Verwendung Wie prüft Orderport?
cXML SharedSecret Einkaufsnetzwerke (Ariba, Coupa, SAP) Vergleicht Sender/Credential/SharedSecret mit dem Hash in der Credential
Bearer Token Einfacher JSON-Webhook-Auth Authorization: Bearer {token}
HMAC-SHA256 Signiert den Request-Body (Shopify-Standard) Berechnet HMAC-SHA256(body, secret), vergleicht zeitkonstant mit Header
Shared-Secret-Header Custom Header mit statischem Secret Prüft den konfigurierten Header auf den korrekten Wert

Wann welcher Typ?

  • cXML SharedSecret: immer für cXML-Pipelines – ist Standard im cXML-Protokoll.
  • HMAC-SHA256: wenn Ihr Shop oder Partner das nativ unterstützt (Shopify, Shopware 6, WooCommerce). Sicherster Webhook-Auth – Header kann nicht abgehört und wiederverwendet werden.
  • Bearer Token: wenn der Partner nur ein einfacher HTTP-Client ist (z. B. cURL-Skript). Einfach einzurichten, aber leakt der Token, kann er missbraucht werden.
  • Shared-Secret-Header: wenn Ihr Partner-System einen spezifischen Header-Namen erwartet (z. B. X-API-Key) und kein Standard-Auth spricht.

Speicherung

  • SharedSecrets und Tokens werden ausschließlich als SHA-256-Hash in der Datenbank gespeichert.
  • Bei der Anlage zeigt Orderport den Klartext einmalig an. Danach ist er nicht wiederherstellbar – eine verlorene Credential muss neu angelegt werden.
  • Aktivieren/Deaktivieren ändert den Hash nicht; die Credential lässt sich später wieder aktivieren.

Rotation

Planen Sie einen Secret-Wechsel so:

  1. Neue Credential mit neuem Secret anlegen (alte bleibt aktiv)
  2. Partner informieren und auf das neue Secret umstellen
  3. Nach einer Übergangszeit alte Credential deaktivieren
  4. Nach einem weiteren Überwachungszeitraum alte Credential löschen

Jede Credential kann separat aktiviert/deaktiviert werden – so ist eine nahtlose Rotation möglich.

Transport-Zugangsdaten

Transport-Zugangsdaten liegen in der Transport-Config, nicht als separate Entität. Je nach Transport-Typ unterscheiden sich die Optionen.

HTTP POST

  • Keine – offener Endpoint
  • Basic Auth – Benutzername + Passwort (Passwort verschlüsselt gespeichert)

REST API

  • Keine
  • Basic Auth
  • Bearer Token (einmalig konfiguriert, verschlüsselt gespeichert)
  • API-Key-Header (Custom Header mit statischem Secret)
  • OAuth 2.0 Client Credentials – für Shopware 6 und andere moderne APIs
  • OAuth 2.0 Password Grant – für Spryker

E-Mail

Kein Auth – Orderport verwendet den intern konfigurierten Mailer.

FTP / SFTP

  • FTP: Benutzername + Passwort (verschlüsselt), optional explizites FTPS (AUTH TLS)
  • SFTP: Benutzername + Passwort oder Benutzername + SSH-Key

Verschlüsselung

Passwörter, Tokens und Client-Secrets werden mit AES-256 verschlüsselt in der Datenbank abgelegt. Beim Aufruf des Transports entschlüsselt Orderport nur kurz im Arbeitsspeicher – Klartexte erscheinen nie in Logs oder Datenbank-Dumps.

Verbindungstest

Jeder Transport hat in der Pipeline-Detailseite einen „Verbindung testen"-Button:

  • HTTP / REST API: Sendet einen Test-Request und zeigt HTTP-Status, Antwortzeit (ms) und Body-Snippet
  • E-Mail: Sendet eine Test-E-Mail an die konfigurierte Adresse
  • FTP / SFTP: Verbindet, listet Ordnerrechte, trennt sofort

Throttled auf 5 Tests pro Minute pro Transport.

Technische Details

HMAC-Details

  • Algorithmus: HMAC-SHA256
  • Body: Raw Request Body (Bytes vor JSON-Parsing, ohne Modifikation)
  • Vergleich: hash_equals() (zeitkonstant gegen Timing-Angriffe)
  • Encoding je nach Integration: Base64 (Shopify, WooCommerce) oder Hex (manche Custom-Integrationen)

OAuth-Flows

Client Credentials (z. B. Shopware 6):

POST {token_url}
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id={id}
&client_secret={secret}

Password Grant (z. B. Spryker):

POST {token_url}
Content-Type: application/json

{
  "data": {
    "type": "access-tokens",
    "attributes": {
      "username": "…",
      "password": "…"
    }
  }
}

Token wird pro Job im Speicher gehalten; läuft er ab, holt Orderport automatisch einen neuen.

Audit-Log

  • credential.created, credential.revoked, credential.deleted bei Lebenszyklus-Aktionen
  • inbound.cxml_auth_failed bei fehlgeschlagenem Auth-Check

Fehlerbehebung

Symptom Ursache Lösung
401 bei jeder Einlieferung Credential deaktiviert oder Secret falsch Auf Pipeline-Detailseite Status prüfen; Secret neu anlegen
„Auth-Typ passt nicht zu Eingangsformat" cXML-Pipeline mit Bearer-Token-Credential cXML erfordert shared_secret; bei JSON auf HMAC/Bearer wechseln
Verbindungstest Throttled Mehr als 5 Tests in einer Minute Eine Minute warten
Shopware-Token läuft ab Token-Lifetime im Shop sehr kurz (< 1 min) In Shopware die Access-Token-Lifetime erhöhen (default 10 min)

Nächste Schritte