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:
- Neue Credential mit neuem Secret anlegen (alte bleibt aktiv)
- Partner informieren und auf das neue Secret umstellen
- Nach einer Übergangszeit alte Credential deaktivieren
- 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
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.deletedbei Lebenszyklus-Aktioneninbound.cxml_auth_failedbei 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) |