Seite 1 von 1

httpClient und Authorization [gelöst]

Verfasst: Di, 26. Jul 2022 18:15
von Marcus Herz
Hallo

Code: Alles auswählen

:setAuthorization( [<cUsername>, <cPassword>] ) --> self
damit kann ich diese definieren.
Was aber wenn ich sowas benötige:
Option 2: Pass Authorization header

If you want to have a full control over your HTTP request, you might want to Base64 encode your username:password and place it into Authorization header.
Curl command should look like this:

curl -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' https://example.com
hier als Syntax aus Curl.
Wie kann man das bei Alaska übergeben?

Re: httpClient und Authorization

Verfasst: Di, 26. Jul 2022 21:06
von Tom
Hallo, Marcus.

Das ist etwas eigenartig gelöst. Man definiert einen Headerparameter "Authorizsation" (2-dim) mit dem Inhalt "Basic <cCode>". "cCode" ist die Base64-Codierung von Benutzername-Doppelpunkt-Passwort. Der Doppelpunkt wird mitcodiert.

Re: httpClient und Authorization

Verfasst: Di, 26. Jul 2022 21:08
von Dominik Krebs
Hallo Marcus,
Der wert des Authorization Header bei Basic Auth lautet Bin2Base64(user:passwort).
Und das ist exakt die Methode dir du mit :SetAuthorization() ausführst.

Mit anderen Worten das was du benötigst laut deiner beschreibung hast du mit der Alaska Methode.

Re: httpClient und Authorization

Verfasst: Di, 26. Jul 2022 22:57
von Jan
Moin,

wenn es nicht die Paarung Benutzername:Kennwort gibt hab ich auch schon mehrfach mit

Code: Alles auswählen

oHc:httpRequest:setHeader("Authorization", "dXNlcm5hbWU6cGFzc3dvcmQ")
gearbeitet. Kommt offenbar nicht mal so selten vor.

Jan

Re: httpClient und Authorization

Verfasst: Mi, 27. Jul 2022 8:09
von Marcus Herz

Code: Alles auswählen

oHc:httpRequest:setHeader("Authorization", "dXNlcm5hbWU6cGFzc3dvcmQ")
So hab ich das ja auch probiert, auch die Syntax von Tom. Aber immer schlägt der Login mit 401 fehl. Ich kann mich aber auf der Seite mit diesem Code anmelden, er stimmt also.
Muss ich weiter rum experimentieren.....

Re: httpClient und Authorization

Verfasst: Mi, 27. Jul 2022 9:01
von Tom
Möglicherweise fehlt Dir ein simples Trim() irgendwo.

Re: httpClient und Authorization

Verfasst: Mi, 27. Jul 2022 15:14
von Werner_Bayern
Servus Marcus,

Code: Alles auswählen

      oHttp:setAcceptType('application/json')
      oHttp:setAcceptCharset("utf8")
      oHttp:setAuthorization(Bin2Base64('Benutzer'), Bin2Base64('PW'))
Funktioniert bei uns. UTF8 ist wichtig.

Re: httpClient und Authorization

Verfasst: Do, 28. Jul 2022 10:21
von ramses
In Header der Übertragung muss für die Anmeldung meist folgendes stehen:

für Basic Auth:

Authorization: Basic <User:PSW als EIN Base64 String>

Fehlt das Wort "Basic" klappt es nicht. Usernamen und Passwort müssen mit Doppelpunkt getrennt und dann zusammen Base64 codiert sein.

Ob die Xbase++ Funktionen das Wort "Basic" automatisch einfügen weiss ich nicht. Bei den Funktionen die ich verwende muss ich es einsetzen.

Re: httpClient und Authorization

Verfasst: Do, 28. Jul 2022 15:49
von Marcus Herz
Das ist wohl alles etwas komplexer.
Wenn ich den Header

Code: Alles auswählen

oHC:httpRequest:AddHeader("Authorization",  "MondasApiKey qe7irgendwasrp9qerpiqepqr9gpqerhgeqe")
// das mit MondasApiKey ist so korrekt und ein Muss
weglasse, dann bekomme ich den Fehler 401, unauthorized
Setz ich den Header, hängt sich httpClient auf, auf dem Server kommt keine Anfrage an, das haben wir gegengecheckt.
Wie kann ich denn jetzt über Localhost den abgesandten String abfangen?
Was gibts denn da für ein Tool?

Re: httpClient und Authorization

Verfasst: Do, 28. Jul 2022 17:08
von Tom
Das macht das Onlinetool von Chilkat aus Deinem curl-Request (Foxpro):

Code: Alles auswählen

loRest.AddHeader("Authorization","Basic dXNlcm5hbWU6cGFzc3dvcmQ=")

Re: httpClient und Authorization

Verfasst: Do, 28. Jul 2022 17:13
von Jan
Marcus,

an einer Stelle benutze ich auch solch einen Basic-Eintrag. Die Zeile sieht da so aus:

Code: Alles auswählen

oHc:httpRequest:setHeader("Authorization", "Basic " + Bin2Base64("Beutzername:Kenwort")) 
Also das Wort "Basic" unverschlüsselt, und Benutzernamen und Paswort zusammen verschlüsselt, getrennt durch den Doppelpunkt. Zwischen "Basic" und den Zugangsdaten ein Leerzeichen.

Jan

Re: httpClient und Authorization

Verfasst: Do, 28. Jul 2022 19:21
von Werner_Bayern
Werner_Bayern hat geschrieben: Mi, 27. Jul 2022 15:14 Servus Marcus,

Code: Alles auswählen

      oHttp:setAcceptType('application/json')
      oHttp:setAcceptCharset("utf8")
      oHttp:setAuthorization(Bin2Base64('Benutzer'), Bin2Base64('PW'))
Funktioniert bei uns. UTF8 ist wichtig.
Hast das getestet? Also Benutzer und PW auch UTF8, bevor es Base64 wird?

Re: httpClient und Authorization

Verfasst: Do, 28. Jul 2022 21:39
von Marcus Herz
Die identischen Header Einträge funktionieren mit Curl. Das ist ja das merkwürdige.

Re: httpClient und Authorization [gelöst]

Verfasst: Fr, 29. Jul 2022 11:55
von Marcus Herz
Gefunden:

Code: Alles auswählen

oHC:setAuthorization("Authorization",  "MondasApiKey  nbiwe672927falschbflubf37p3974fq")
// darf NICHT zusammen mit 
oHC:httpRequest:AddHeader("Authorization",  "MondasApiKey nbiwe672927falschbflubf37p3974fq")
verwendet werden. Es funktioniert nur und ausschließlich mit dem AddHEader Eintrag.

Re: httpClient und Authorization [gelöst]

Verfasst: Fr, 29. Jul 2022 12:16
von Frank Grossheinrich
Hallo Marcus,

schau bitte auch mal hier: https://ilx.alaska-software.com/index.p ... zation.95/

Eventuell erklärt es das noch etwas besser. Unsere Doku wird auch noch nachgebessert.

Grüße
Frank

Re: httpClient und Authorization [gelöst]

Verfasst: Fr, 29. Jul 2022 12:22
von Marcus Herz
Vielleicht lag mein Problem darin, dass es sich um kein Basic AUTH handelt, sondern eine spezifische Anmeldung mit dem Codewort MondasApiKey.