FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: TomLee am 20 Januar 2026, 17:51:54

Titel: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: TomLee am 20 Januar 2026, 17:51:54
Hi,

ich versuche gerade, Daten von einer Symfony-basierten Webanwendung mittels HttpUtils_NonblockingGet abzugreifen. Der Endpunkt liefert JSON, ist aber durch ein Login geschützt.

Mein Problem: Meine Versuche mit Basic Auth schlagen fehl. Der Server ignoriert alle meine Versuche und antwortet mit dem HTML der Login-Seite.

Im Netzwerk-Traffic des Browser sieht man das die Anwendung Session-Cookies nutzt. In meinem Browser-Header sehe ich:

PHPSESSID: Die aktuelle Session-ID.

REMEMBERME: Ein Langzeit-Token.

Wenn ich diese Cookies in dem Header von HttpUtils angebe, klappt der Abruf sofort:

sub TransformUtilization {
#my $auth = encode_base64("bla" . ":" . "blub!");
    #$auth =~ s/\n//g; # Wichtig: Zeilenumbruch von Base64 entfernen
#my $all_cookies = 'PHPSESSID=52d80051a89397f7112345688; REMEMBERME=App.Entity.User%3AVGhvbWFz%3A1800456286%3AExVh128837646673Wok9Jc~n3D40wRCvILZkLzVJjL_3VpOvbjKX6yO4B9J0JeVQvs~;';
HttpUtils_NonblockingGet({
    #url => "https://fhempi/statistics/turnover/monthly?yearStart=2026&yearEnd=2026&invoice-status%5B%5D=1&invoice-status%5B%5D=3&invoice-status%5B%5D=2",
url => "https://bli:bla%21%40fhempi/statistics/turnover/monthly?yearStart=2026&yearEnd=2026&invoice-status%5B%5D=1&invoice-status%5B%5D=3&invoice-status%5B%5D=2",
url => "https://bli:bla!\@fhempi/statistics/turnover/monthly?yearStart=2026&yearEnd=2026&invoice-status%5B%5D=1&invoice-status%5B%5D=3&invoice-status%5B%5D=2",
#header => "Cookie: $all_cookies",
#header => "Authorization: Basic $auth",
#noshutdown => 1,
    #sslargs => { SSL_verify_mode => 0, SSL_verifycn_name => 'none' },
    #timeout => 10,
callback => sub {
    return if $_[1];
Debug $_[2];
}
  });
}

ja, hinten ist ein Befehlszeichen im Passwort.

Habe ich bei der Umsetzung von Basic Auth in HttpUtils eventuell etwas Grundsätzliches übersehen, oder ist es bei Symfony-Backends evtl. normal dass Basic Auth nicht "out-of-the-box" funktioniert? Ich hab keine Ahnung...

Mit was muss ich mich beschäftigen das ich eine vernünftige Lösung bekomme?

Gruß Thomas
Titel: Aw: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: passibe am 20 Januar 2026, 20:23:02
Ich habe jetzt keine Lösung parat, aber ich glaube, dass das hier einfach kein Basic Auth ist.

Basic Auth funktioniert allein über den Authorization-Header, also mit Authorization: Basic base64encode(user:pass) (Pseudocode). Wenn das nicht funktioniert bzw. es irgendwelche Cookies oder auf andere Weise übermittelte Token braucht, handelt es sich nicht um Basic Auth.
Titel: Aw: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: TomLee am 20 Januar 2026, 20:40:27
Meinst Du, einfach den Maintainer des Projekt fragen, würde die Frage schneller beantworten wie hier weiter rätseln?

Ich hab jetzt mit den gezeigten Beispielen nix falsch gemacht und es sollte grundsätzlich eigentlich so klappen?
Titel: Aw: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: passibe am 20 Januar 2026, 21:19:38
Zitat von: TomLee am 20 Januar 2026, 20:40:27Ich hab jetzt mit den gezeigten Beispielen nix falsch gemacht und es sollte grundsätzlich eigentlich so klappen?
Nur, wenn die Anwendung, bei der du dich authentifizieren willst, auch tatsächlich Basic Auth nutzt, wonach es aktuell aber eher nicht aussieht.

Kannst es ja auch mal testen: https://testpages.eviltester.com/pages/auth/basic-auth/
Titel: Aw: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: TomLee am 20 Januar 2026, 21:55:41
Zitat von: passibe am 20 Januar 2026, 21:19:38
Zitat von: TomLee am 20 Januar 2026, 20:40:27Ich hab jetzt mit den gezeigten Beispielen nix falsch gemacht und es sollte grundsätzlich eigentlich so klappen?
Nur, wenn die Anwendung, bei der du dich authentifizieren willst, auch tatsächlich Basic Auth nutzt, wonach es aktuell aber eher nicht aussieht.

Kannst es ja auch mal testen: https://testpages.eviltester.com/pages/auth/basic-auth/

Versteh ich nicht, natürlich unterstützt sie Basic Auth sonst könnt ich mich mit den Credentials ja nicht einloggen.
Titel: Aw: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: frober am 20 Januar 2026, 22:01:21
Soweit ich das sehe musst du die Auth per POST mit senden.

https://symfony.com/doc/current/reference/configuration/security.html (https://symfony.com/doc/current/reference/configuration/security.html)

Z.B.
http://www.abc.com/details?method=post&user=john&psswd=445566

Wie das genau bei symfony aussieht habe ich nicht gefunden, aber im Link weiter unter steht zumindest die Variable für User und passwd.
Titel: Aw: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: TomLee am 20 Januar 2026, 22:06:40
Ich schaus mir später noch oder Morgen, an. Danke das dich mit beschäftigt hast.
Titel: Aw: Basic Auth klappt nicht mit HttpUtils_NonblockingGet
Beitrag von: passibe am 20 Januar 2026, 23:07:26
Zitat von: TomLee am 20 Januar 2026, 21:55:41Versteh ich nicht, natürlich unterstützt sie Basic Auth sonst könnt ich mich mit den Credentials ja nicht einloggen.
Also ich habe es so verstanden, dass du dich gerade NICHT einloggen kannst:
Zitat von: TomLee am 20 Januar 2026, 17:51:54Der Server ignoriert alle meine Versuche und antwortet mit dem HTML der Login-Seite.
Sonst würde der Thread hier ja keinen Sinn ergeben.



Dass du dich vom Browser aus irgendwie mit irgendwelchen Zugangsdaten einloggen kannst, bedeutet ja noch lange nicht, dass im Hintergrund Basic Auth verwendet wird. Hier im Forum kann ich mich auch
Zitat von: TomLee am 20 Januar 2026, 21:55:41mit [meinen] Credentials [...] einloggen
aber allein daraus kann ich nicht schließen, dass das Forum Basic Auth nutzt (tut es natürlich auch nicht).

Eine gute Daumenregel ist eigentlich, dass, wenn es eine HTML-Login-Seite gibt und/oder der Server nach erfolglosem Einloggen nicht mit 401 antwortet, es sich nicht um Basic Auth handelt. Insbesondere loggt man sich nämlich bei Basic Auth über den Dialog des Browsers ein (klick (https://www.alexedwards.net/static/img/auth-1.png)), nicht über irgendeine (HTML)-Website.

Du kannst in deinem Browser einfach mal schauen, ob dieser nach dem Einloggen den Authorization: Basic-Header mitsendet. Wenn nein, kein Basic Auth.