Hilfe
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Fehler Erstellung Access-Token

JörgF
Autor ★
5 Beiträge

Hallo zusammen,

 

ich habe ein Problem mit der Erstellung des OAuth2 Authentifikations-Token mittels eines Java Spring POST Requests über https://api.comdirect.de/oauth/token.

Es kommt die Fehlermeldung '

org.springframework.web.client.HttpClientErrorException$BadRequest: 400 400: [{"error":"invalid_request","error_description":"Missing or unsupported parameters"}]'.

 

Lt. der Dokumentation werden die folgenden Headerattribute gesetzt:

- header.set("accept", "application/json");

- header.set("content-Type", "application/x-www-form-urlencoded");

 

Als Body setzte ich die folgenden Parameter:

- body.put("client_id", "...");

- body.put("client_secret", ...);

- body.put("username", "Zugangsnummer");

- body.put("password", "PIN");

- body.put("grant_type", "password");

 

Habt Ihr einen Tipp für mich ob einen Parameter vergessen habe oder einen Wert falsch gesetzt habe? Als grant_type ist der Wert "password" gesetzt, ist das richtig oder muss ein Passwort generiert werden?

 

Danke,

Jörg

7 ANTWORTEN

SMT_Jessica
ehemaliger Mitarbeiter
1.179 Beiträge

Hallo @JörgF,  

 

herzlich willkommen in der Community!  

 

Wir haben deine Anfrage an die Fachabteilung geschickt und werden dir schreiben, wenn wir eine Rückmeldung erhalten.  

 

Viele Grüße und einen guten Start in die Woche

Jessica

uburoi
Experte
83 Beiträge

wenn ich meinen Postman request ansehe (welcher funktioniert), dann schickt er diese Header mit:

 

Content-Type: application/x-www-form-urlencoded

Accept: application/json

User-Agent: PostmanRuntime/7.26.8

Postman-Token: 398ac458-d388-45a6-b508-e8f20f5e8f6a

Host: api.comdirect.de

Accept-Encoding: gzip, deflate, br

Connection: keep-alive

Content-Length: 148

 

Vielleicht guckst du mal, ob die bei dir auch alle dabei sind (Content Length ist einer, den man gerne vergisst)

SMT_Jessica
ehemaliger Mitarbeiter
1.179 Beiträge

Hallo nochmal @JörgF

 

Wir haben für dich folgende Rückmeldung bekommen:

 

Auf den ersten Blick sieht alles gut aus. Auch der Wert “grant_type“:“password“ ist korrekt. Bitte prüfe, ob du deine client_id und client_secret korrekt übernommen hast (ohne Leerzeichen am Anfang und Ende oder Ähnliches) und ob du deine Zugangsnummer und PIN eingetragen hast. Außerdem können wir dir empfehlen, die bereitgestellte Postman Collection zu nutzen, um den Request dort mithilfe der Postman Console (Menü View -> Show Postman Console) Zeile für Zeile mit dem Request aus deiner Java-Anwendung zu vergleichen. Auch in Java Spring lässt sich wahrscheinlich der komplette Request loggen.

 

Viele Grüße

Jessica

JörgF
Autor ★
5 Beiträge

Danke für deine Antwort. Ich habe mir Postman eingerichtet und kann die folgende Anfrage dort auch erfolgreich abesenden:

curl --location --request POST 'https://api.comdirect.de/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
--header 'Cookie: qSession=8c29eb4f.5b92f440d5c3a' \
--data-urlencode 'client_id=...' \
--data-urlencode 'client_secret=...' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=12345678' \
--data-urlencode 'password=123456'

 

Der Einzigste Headerparameter den ich im Java Code nicht setze ist 'Cookie'. Hast du einen Cookie gesetzt?

uburoi
Experte
83 Beiträge

@JörgF : nein, einen Cookie habe ich nicht gesetzt. Du kannst dir aus Postman im übrigen den Java Code für den Request generieren lassen. Vielleicht magst du das probieren und den output mit deinem selbst erstellten Code vergleichen?

uburoi
Experte
83 Beiträge

JörgF
Autor ★
5 Beiträge

@uburoi Danke für den Tipp mit dem Postman Code Generator. Mit dem Unirest Request funktioniert es. Was jetzt genau der Unterschied zum Request über das Spring RestTemplate ist muss ich noch rausfinden.

 

@SMT_Jessica  @uburoi Danke Euch beide für die schnelle Hilfe. Das läuft richtig super