am 18.04.2025 19:49
Hallo Community,
trotz mehrfacher Versuche über die letzten Tage, ist es mir nicht möglich den Schritt 2.1 OAuth2 Resource Owner Password Credentials Flow der comdirect REST API Dokumentation durchzuführen.
Anstatt eines JSON-Objekts mit access_token und refresh_token liefert die API eine HTML-Seite mit dem Header Funktionsstörung und dem Text Bei der von Ihnen gewählten Funktion ist eine Störung aufgetreten. Wir bitten um Entschuldigung. Die Störung wird so schnell wie möglich behoben, sodass Ihnen in Kürze wieder alle Funktionen zur Verfügung stehen.
Den API-Call setze ich wie folgt ab:
curl -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" -v https://api.comdirect.de/oauth/token --data-urlencode "@body.txt"
Der Inhalt des HTTP-Bodies (cat body.txt😞
client_id:"User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn" client_secret:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" grant_type:password username:"nnnnnnnn" password:"xxxxxx"
API Endpunkt:
https://api.comdirect.de/oauth/token
Mitgesendeter HTTP-Header:
Accept:application/json Content-Type:application/x-www-form-urlencoded
HTTP-Error-Code:
403 Forbidden
Liegt hier (seit mehreren Tagen) tatsächlich eine Störung vor oder was ist möglicherweise an dem oben aufgeführten API Call falsch?
Im Voraus besten Dank.
N.
am 18.04.2025 19:56
Bei mir funktioniert alles super.
am 18.04.2025 20:19
Ich habe keine Fehler finden können. Packen die Doku pdf und deinem Code mal in ChatGPT und prüfe auf Fehler. Hat bei mir auch ab und an geholfen.
am 18.04.2025 20:57
@com_phil Herzlichen Dank fürs Überprüfen und den Tipp mit ChatGPT. Gesagt, getan...
Nach mehrmaligen durch ChatGPT vorgeschlagenen und durchgeführten Variationen, bestätigt ChatGPT die Richtigkeit der obigen Anfrage.
Auf Grund der fehlenden x-http-response-info in der HTTP-Antwort, ist ChatGPT ziemlich "sicher", das eindeutig ein harter Block vom Server vor dem API-Backend die Ursache ist. Soll heißen, mein Request darf nicht mal zur Authentifizierungs-API durch. So zumindest die Schlussfolgerung seitens ChatGPT.
Nachdem ich das Problem bereits vor drei Tagen telefonisch dem Support erörtert habe, hat der mich gebeten, diese Anfrage an Reklamation@comdirect.de sowie info@commdirect.de zu senden. Das habe ich gemacht, aber noch keine Antwort erhalten.
Hatte daher auf die Schwarmintelligenz gehofft und deswegen den Post hier abgesetzt.
am 18.04.2025 22:50
Vielleicht stören die Anführungsstriche und die Doppelpunkte , das sollten im urlencoden = sein?
Der Body sollte am im Ende im urlencode wie unten aussehen.
POST /oauth/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 148 Host: api.comdirect.de Accept: application/json User-Agent: php-comdirect Connection: close client_id=User_2xxxxxxxxxccccccc25&client_secret=xxxxxxxxxxxxxxx&grant_type=password&username=xxxxxxxx&password=xxxxxx
am 19.04.2025 06:19
Ich habe auch diese Variationen durch:
Mit Anführungszeichen und Doppelpunkt
client_id:"User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn" client_secret:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" grant_type:password username:"nnnnnnnn" password:"xxxxxx"
Ohne Anführungszeichen, aber mit Doppelpunkt
client_id:User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn client_secret:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx grant_type:password username:nnnnnnnn password:xxxxxx
Mit Anführungszeichen und Gleichheitszeichen (=) anstatt des Doppelpunkts (:)
client_id="User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn" client_secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" grant_type=password username="nnnnnnnn" password="xxxxxx"
Ohne Anführungszeichen, aber mit Gleichheitszeichen (=) anstatt des Doppelpunkts (:)
client_id=User_nnnnnn-nnnnnnnnnnnnnnnnnnnnnnnnnn client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx grant_type:password username=nnnnnnnn password:xxxxxx
@com_phil Dir nochmals herzlichen Dank für Deine Bemühungen! Ich glaube, dass tatsächlich auf Seiten comdirects beim Erzeugen der client_id und des client_secrets (über die WebGUI) etwas schief gelaufen ist. Ohne Investigation was genau an der API-Schnittstelle bei meinen Anfragen quer hängt, wird das Problem nicht zu lösen sein.
am 19.04.2025 06:29
Ich glaube weniger an ein Comdirect Problem. Da mir die Fehlermeldung bekannt vorkommt und auf einen Fehler in meinem Code zurückzuführen war.
In deinem vierten Beispiel sind zwei Doppelpunkte. Die Doppelpunkte müssen komplett mit = ersetzt werden.
es könnten auch noch die Zeilenumbrüche in der Textdatei sein. schreib alles mal in einer Zeile ohne Leerzeichen sowie oben in meinem Text am Besten direkt im urlencode.
am 19.04.2025 07:16
Ja, holla die Waldfee!!!
*trommelwirbel* für den Supporter des Monats: com_phil 😀🙏
Für alle, die mit dem gleichen Problem ringen, hier die Lösung:
Wie von com_phil empfohlen, müssen die ganzen Parameter als eine einzige Zeile übergeben werden. Diese am besten in einer Datei (in meinem Beispiel body.txt) speichern:
client_id=User_2xxxxxxxxxccccccc25&client_secret=xxxxxxxxxxxxxxx&grant_type=password&username=xxxxxxxx&password=xxxxxx
Eine kurze Erklärung für diejenigen, die mit dem HTTP-Protokoll und APIs (noch) nicht so bewandert sind: Das Kaufmanns-Und (&) dient im HTTP-Protokoll als Trennzeichnen, um mehrere Parameter voneinander zu separieren. Weiterhin ist die ganze Zeile eine Kombination aus mehreren Schlüssel-/Wert-Paaren (Key-/Value-Pairs).
Dann den HTTPS-Request wie folgt an comdirects API senden:
curl -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" -A "comdirect-client/1.0" https://api.comdirect.de/oauth/token --data @body.txt
!!!Uffbasse!!! Die Datei body.txt darf nicht mit dem Parameter --data-urlencode übergeben werden (dann erscheint die zuvor beschriebene Fehlermeldung). Es muss --data verwendet werden!
Wenn alles korrekt ist, belohnt die API einen mit folgendem HTTP-Header:
< HTTP/1.1 200 < Server: nginx < Date: Sat, 19 Apr 2025 04:38:21 GMT < Content-Type: application/json;charset=UTF-8 < Connection: keep-alive < Vary: Accept-Encoding < Vary: Accept-Encoding < Set-Cookie: qSession=annnnnnn.xxxxxxxxxxxxxxxxxxxxxxx;domain=.comdirect.de;Secure;SameSite=none;path=/;HttpOnly < Vary: Origin < Vary: Access-Control-Request-Method < Vary: Access-Control-Request-Headers < Cache-Control: no-store < x-content-type-options: nosniff < Referrer-Policy: strict-origin-when-cross-origin < Strict-Transport-Security: max-age=31536000; includeSubDomains < X-XSS-Protection: 1; mode=block < Content-Language: en-US < Transfer-Encoding: chunked
Und im Body ist folgendes JSON-Objekt enthalten:
{
"access_token": "nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn",
"token_type": "bearer",
"refresh_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"expires_in": 599,
"scope": "TWO_FACTOR",
"kdnr": "nnnnnnnnnn",
"bpid": xxxxxxx,
"kontaktId": nnnnnnnnnn
}Allen viel Erfolg, die bisher am Erstellen der Tokens gescheitert sind.
am 08.06.2025 15:30
Hi Alle,
auf der API Seite verlinkt comdirect zur Commerzbank.
Bietet comdirct die gleichen Schnittstellen?
Oder Kurz: Gibt es bei der comdirect eine "Notification" Funktion/API, welche bei jeder Transaktion eine URL (Push) aufrufen kann?
Danke!
am 10.06.2025 13:22
Aus meinem Umfeld weiß ich, dass es für Corporate Kunden eine umfangreiche Sammlung an API gibt, die u.a. Webhooks ermöglicht. Soweit ich das der API Doku entnehmen kann, gibts für das Retail-Konto hier keinen Webhok o.ä. Wobei ich fairerweise sagen muss, dass ich nur den Depot/Brokerage-Teil der API nutze.
Grüße