httpClient und Authorization [gelöst]

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

httpClient und Authorization [gelöst]

Beitrag 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?
Zuletzt geändert von Marcus Herz am Fr, 29. Jul 2022 11:58, insgesamt 1-mal geändert.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag 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.
Herzlich,
Tom
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: httpClient und Authorization

Beitrag 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.
Gruß Dominik
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag 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.....
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag von Tom »

Möglicherweise fehlt Dir ein simples Trim() irgendwo.
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: httpClient und Authorization

Beitrag 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.
es grüßt

Werner

<when the music is over, turn off the lights!>
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: httpClient und Authorization

Beitrag 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.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag 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?
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag von Tom »

Das macht das Onlinetool von Chilkat aus Deinem curl-Request (Foxpro):

Code: Alles auswählen

loRest.AddHeader("Authorization","Basic dXNlcm5hbWU6cGFzc3dvcmQ=")
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: httpClient und Authorization

Beitrag 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?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: httpClient und Authorization

Beitrag von Marcus Herz »

Die identischen Header Einträge funktionieren mit Curl. Das ist ja das merkwürdige.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: httpClient und Authorization [gelöst]

Beitrag 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.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: httpClient und Authorization [gelöst]

Beitrag 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
We love Xbase++, and you?
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: httpClient und Authorization [gelöst]

Beitrag von Marcus Herz »

Vielleicht lag mein Problem darin, dass es sich um kein Basic AUTH handelt, sondern eine spezifische Anmeldung mit dem Codewort MondasApiKey.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten