[PATCH] - HttpUtils - Auth-Credentials als separate Hash-Parameter

Begonnen von Markus Bloch, 01 Dezember 2017, 17:36:49

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo Rudi,

aktuell muss man ja bei HttpUtils, wenn man Username+Passwort verwenden will um HTTP-Authorization zu machen (Basic/Digest) diese direkt in der URL mitliefern in URL-encodierter Form. Dadurch kann man einerseits die URL nicht umbedingt mitloggen (wofür es ja $param->{hideurl} gibt) um im Fehlerfall zu schauen, andererseits muss man immer daran denken urlEncode() beim Bau der URL zu verwenden. Mir war das bspw. bei den TR-064 Umbauten nicht sofort bewusst und habe es daher ohne urlEncode() in die URL eingebaut. Es dauerte nicht lange bis der erste User ein Problem hatte.

Ich habe daher einen Patch gebaut mit dem man die Credentials direkt in $param->{user} und $hash->{pwd} angeben kann ohne URL-Encoding und diese Daten nicht mehr durch die URL mitschieben muss. Die alte Funktionalität der Angabe über die URL bleibt natürlich erhalten. Dadurch kann man URL's weiterhin im Log ausgeben ohne die Credentials preiszugeben und man muss die URL-Encodierung nicht mehr beachten.

$param->{auth} wurde bisher als Träger von "$user:$pwd" genutzt. Dieses ist nun ein reines Flag (0/1) welches anzeigt, ob Credentials zur Verfügung stehen (per URL oder per Parameter "user"/"pwd") oder nicht.

Läuft bei mir seit 1 Woche problemlos auf meinem Produktivsystem.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Habs durchgelesen, kurz getestet (http & https) und eingecheckt....

...bis auf:
Zitat+    $param->{sslargs}    = { SSL_verify_mode => 0,  SSL_cipher_list => 'DEFAULT:!DH' };
Auch weil patch das nicht haben wollte (es gibt jetzt schon eine Zeile mit $param->{sslargs} = {}), aber hauptsaechlich weil ich den Grund fuer diese Defaults nicht verstehe, und die Konsequenzen nicht ueberblicke, wenn ich die Voreinstellung aendere.

Markus Bloch

Hallo Rudi,

vielen Dank. Die genannte Zeile ist irrtümlich mit in dem Diff gelandet. Sie gehört zu FB_CALLMONITOR, die ich bereits mit https://svn.fhem.de/trac/changeset/15534/ eingecheckt habe. Ich habe beim "svn diff" dies übersehen.

Danke für den Check-In.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)