![]() |
REST-API - Überstellung X-Authorization Token
Hallo,
ich habe für eine REST-API mit Login und Passwort ein Token angefordert. Dieses funktioniert einwandfrei. Nun soll laut Doku für jeden Zugriff auf die API dieser Token wie folgt überstellt werden:
Code:
Wie mache ich das mit RestClient? Ich hatte schon diverses versucht, bekomme aber immer ein 401 unauthorized.
X-Authorization: Token <your-personal-access-token>
|
AW: REST-API - Überstellung X-Authorization Token
Zitat:
Client.SetHTTPHeader sollte reichen |
AW: REST-API - Überstellung X-Authorization Token
|
AW: REST-API - Überstellung X-Authorization Token
Code:
und
RESTClient.SetHTTPHeader('X-Authorization: Token',token);
Code:
;
RestClient.AddParameter('X-Authorization: Token',token, TRESTRequestParameterKind.pkHTTPHEADER)
führt leider immer noch zu einer 401. kann es am Syntax liegen? Ich hatte schon
Code:
probiert, aber mit dem gleichen Resultat.
RESTClient.SetHTTPHeader('X-Authorization: ','Token ' + token);
|
AW: REST-API - Überstellung X-Authorization Token
Ich tippe mal auf
Delphi-Quellcode:
RESTClient.SetHTTPHeader('X-Authorization: Token ',token);
|
AW: REST-API - Überstellung X-Authorization Token
Probier mal
Code:
RestClient.AddAuthParameter('X-Auth-Token',token, TRESTRequestParameterKind.pkHTTPHEADER);
|
AW: REST-API - Überstellung X-Authorization Token
Code:
=> 401
RESTClient.SetHTTPHeader('X-Authorization: Token ',token);
Code:
=> 401
RestClient.AddAuthParameter('X-Auth-Token',token, TRESTRequestParameterKind.pkHTTPHEADER);
|
AW: REST-API - Überstellung X-Authorization Token
Ich werfe mal
Delphi-Quellcode:
RestClient.AddAuthParameter('X-Authorization','Token '+token, TRESTRequestParameterKind.pkHTTPHEADER);
in diese lustige Raterunde. :-) Nachtrag: Wenn man schaut, wie es in der Unit Rest.Authenticator.OAuth gemacht wird, könnte sich [TRESTRequestParameterOption.poDoNotEncode] als vierter Parameter noch lohnen, also:
Delphi-Quellcode:
RestClient.AddAuthParameter('X-Authorization','Token '+token, TRESTRequestParameterKind.pkHTTPHEADER,[TRESTRequestParameterOption.poDoNotEncode]);
|
AW: REST-API - Überstellung X-Authorization Token
Um welche API handelt es sich denn?
Also wenn ich mal nach
Code:
Google, finde ich nur die VRM API. In dieser steht aber nach dem Login
X-Authorization: Token <your-personal-access-token>
Code:
Das oben genannte Token wird nur bei "personal access token" genutzt.
X-Authorization: Bearer {token}
|
AW: REST-API - Überstellung X-Authorization Token
Code:
; ==> 401
RestClient.AddAuthParameter('X-Authorization','Token '+token, TRESTRequestParameterKind.pkHTTPHEADER)
Code:
==> 401
RestClient.AddAuthParameter('X-Authorization','Token '+token, TRESTRequestParameterKind.pkHTTPHEADER,[TRESTRequestParameterOption.poDoNotEncode]);
Zitat:
![]() Mit dem Bearer hatte ich es auch versucht, aber ebenso ohne erfolg |
AW: REST-API - Überstellung X-Authorization Token
Und wie bist du an das Token gekommen?
|
AW: REST-API - Überstellung X-Authorization Token
Ermittlung des Tokens erfolgt laut Doku wie folgt:
POST ![]() { "username": "john@example.com", "password": "secret-passw0rd" } und gibt mir den Token und die idUser zurück. |
AW: REST-API - Überstellung X-Authorization Token
Jetzt hampeln wir seit einer Seite über "X-Authorization: Token <your-personal-access-token>"
Laut Doku ist das falsch. WIE hast du "X-Authorization: Bearer {token}" versucht? |
AW: REST-API - Überstellung X-Authorization Token
OK, dann würde ich mal dies probieren:
Delphi-Quellcode:
RestClient.AddAuthParameter('X-Authorization','Bearer '+token, TRESTRequestParameterKind.pkHTTPHEADER);
|
AW: REST-API - Überstellung X-Authorization Token
Mit
Code:
und
RESTClient.SetHTTPHeader('X-Authorization: Bearer ',token);
Code:
und
RestClient.AddAuthParameter('X-Authorization: Bearer',token, TRESTRequestParameterKind.pkHTTPHEADER);
Code:
jeweils immer 401
RestClient.AddAuthParameter('X-Authorization','Bearer '+token, TRESTRequestParameterKind.pkHTTPHEADER);
|
AW: REST-API - Überstellung X-Authorization Token
Ist da der "X-Authorization" Header wirklich richtig? Müsste das nicht der normale "Authorization" Header sein? Hast du das schon mal versucht?
Versuch auch mal das Token Base64 encoded zu übergeben? X-Authorization Bearer {base64 encoded Token} Die Doku ist da leider schon sehr mangelhaft. |
AW: REST-API - Überstellung X-Authorization Token
Kommt denn beim request nur ein 401 oder gibts da auch im response noch Info´s?
Ich würde erst mal Delphi bei Seite legen und Tools wie curl oder postman nutzen. Tritt der Fehler da auch auf? |
AW: REST-API - Überstellung X-Authorization Token
Kannst du irgendwie nicht nur den Response code auswerten (401) sondern gucken, was wirklich gesendet wird?
Da gibt es Tools, wie z.B. Fiddler, die die jeden HTTP Request mitloggen. Dann kannst du gucken was dein Programm wirklich sendet und ob es mit dem übereinstimmt, was es senden sollte. So Trial&Error ist doch doof ;-) |
AW: REST-API - Überstellung X-Authorization Token
Hast Du mal den RestDebugger ausprobiert, geht es damit ?
Oder mit anderen REST-Tools ? |
AW: REST-API - Überstellung X-Authorization Token
Das ist sicherlich keine schlechte Idee, das ganze mal ohne Delphi zu testen.
Ich habe nun mal mit Postman ein Authorization 'Bearer Token' abgesetzt und bekomme folgende Rückmeldung { "success": false, "errors": "Login required", "error_code": "invalid_credentials" } Auch andere scheinen ein ähnliches Problem zu haben: ![]() Nachtrag1: Mit Postman hat es nun zumindest schon mal geklappt::-D Jipee! Unter Headers einen Key mit 'X-Authorization' anlegen + in die Value Bearer + Leerzeichen + Token Nachtrag2: :evil: Arghhhhhhhhhh!!! Der Token hatte Quotes.... :oops: ==> AnsiDequotedStr Nachtrag3: Nun hätte es mit Delphi ja auch funktionieren sollen:
Code:
oder
RESTClient.SetHTTPHeader('X-Authorization','Bearer ' + token);
Code:
RESTRequest.Params.AddHeader('X-Authorization', 'Bearer ' + token);
Code:
Das funktioniert nun leider nicht. Was mache ich da noch falsch?
oder
RestClient2.AddAuthParameter('X-Authorization','Bearer ' + token, TRESTRequestParameterKind.pkHTTPHEADER); |
AW: REST-API - Überstellung X-Authorization Token
Hallo,
der Doppelpunkt fehlt? Und der Bearer Token gehört in geschweifte Klammern? |
AW: REST-API - Überstellung X-Authorization Token
Bitte schaue dir wie von jfheins vorgeschlagen das kostenlose Telrik Fiddler an.
Das klinkt sich in die Kommunikation ein und du siehst den Request von Postman und von deinen Programm im Vergleich. Oft ist es nur ein Leerzeichen oder ein fehlendes DoNotEncode auf der Delphi-Seite. Ist auch ganz simpel zu bedienen. ![]() |
AW: REST-API - Überstellung X-Authorization Token
Lösung gefunden! Keine Verschlüsselung brachte den Erfolg bei diesem Syntax. :thumb:
Code:
Vielen Dank an alle!!!
RestClient.AddAuthParameter('X-Authorization','Bearer ' + token, TRESTRequestParameterKind.pkHTTPHEADER,[TRESTRequestParameterOption.poDoNotEncode]);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz