FHEMWeb Verlängerung der Anmeldung über Cookie - FHEMWeb-Patch

Begonnen von viegener, 27 Dezember 2015, 16:52:33

Vorheriges Thema - Nächstes Thema

viegener

Einige Geräte (insbesondere iOS_DEvices) haben die Eigenschaft, dass sie bei basicauth-Anmeldung nichtmal den Benutzer vorbelegen aus der letzten Anmeldung. Ich hatte schon länger überlegt, ob man nicht dafür einen Loginscreen bauen sollte, allerdings wäre das eine relativ aufwändige Umbauarbeit.

Die Lösung die ich gebaut habe schickt nach erfolgreicher Anmeldung ein Cookie mit dem Authttoken, dass zur Anmeldung für eine einstellbare Zeit verwendet wird. Während dieser Zeit (in Tagen) wird keine weitere Anmeldung erforderlich. Es gibt dazu ein zusätzliches Attribute

cookieExpiryDays in dem die Laufzeit des Cookies in Tagen angegeben werden kann. Default 0 also kein Cookie (wie bisher).
Der Cookie wird nur bei erfolgreicher Anmeldung gesetzt und eingestellter Dauer gesetzt, ansonsten entsteht keine Veränderung.

Der Patch gegen die aktuellste Version von FHEMWeb (ID 10264 von gestern) findet sich anbei.
@Rudi: Ein paar Debug-Ausgaben habe ich noch dringelassen...

Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

rudolfkoenig

Da der Patch groesser ist, und sein Sinn mir nicht direkt einleuchtet: besteht auch bei anderen Interesse?

peterchen89

Ein ähnliches Problem habe ich auch. Verwende aber einen Apache Reverse Proxy mit HTTPS und basic auth vor FHEM. Meine Idee zur Lösung war einen Pfad für jeden Benutzer über den er dann automatisch authentifiziert ist. Quasi eine dauerhafte Session in der URL. Wäre das nicht auch eine praktikable Lösung?

Zumindest mir gibt es ein besseres Gefühl die Zugangsmöglichkeiten über Apache und nicht über FHEM direkt zu verwalten. 
FHEM 5.5 auf HP ProLiant MicroServer G7 N54L 8 GB Ubuntu 14.04 LTS.
1x HM-CFG-LAN, 1x HM-CFG-USB, 7x HM-CC-RT-DN, 5x HM-SEC-SC-2, 1x HM-SEC-SCo, 2x HM-TC-IT-WM-W-EU, 2x HM-LC-Sw1-Pl, 2x HM-ES-PMSw1-Pl, 4x HM-PB-2-WM55-2, 1x HM-PB-6-WM55, 1x HM-WDS10-TH-O, 1x CUL433, 6x Pollin Funksteckdose

viegener

Zitat von: peterchen89 am 28 Dezember 2015, 11:00:17
Ein ähnliches Problem habe ich auch. Verwende aber einen Apache Reverse Proxy mit HTTPS und basic auth vor FHEM. Meine Idee zur Lösung war einen Pfad für jeden Benutzer über den er dann automatisch authentifiziert ist. Quasi eine dauerhafte Session in der URL. Wäre das nicht auch eine praktikable Lösung?

Zumindest mir gibt es ein besseres Gefühl die Zugangsmöglichkeiten über Apache und nicht über FHEM direkt zu verwalten.

Generell könnte man das wohl über einen Apache Reverse Proxy abbilden, allerdings erhöht das deutlich die Komplexität. Ausserdem verhindert es auch Probleme von Anfängern  bei mir nachstellen oder debuggen zu können. Dafür wird häufig der direkte Zugriff von Browser auf FHEMWEB benötigt. Gerade im Zusammenhang mit Extensions unter HTTPSRV (z.B. mit FTUI) tauchen bei den Benutzern immer wieder interessante Effekte auf.

Wie gesagt generell fände ich eine Login-Seite mit Session-Cookie eine noch bessere Lösung, aber der Session-Cookie nach erfolgter Anmeldung per basic-Auth ist schon eine recht gute Annäherung und trotzdem auch eine überschaubare Erweiterung. Mir ging es ja auch darum etwas zu machen was das Verhalten für diejenigen, die das nicht brauchen auch nicht verändert. Ich habe es deshalb so gebaut, dass nichtmal eine Cookie gesetzt wird, wenn das Attribut nicht gesetzt ist.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

slor

Ich finde die Idee super! Reverse Proxy ist zu kompliziert.
Mein Windows 10 Phone erfragt auch bei jeder Anmeldung nach user und pw. Total nervig.

micomat

wäre ein Grund weniger für "Lieschen Müller" die Basic auth einfach weg zu lassen. siehe Security Thread in sonstiges.
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

rudolfkoenig

Ich gehe davon aus, dass mit der neuen Modularisierung der Authentifizierung diese Loesung auch in einem externen Modul ausgelagert werden kann. Als Beispiel kann man allowed_Authenticate in 96_allowed.pm nehmen, und von da ist auch nur der Abschnitt fuer FHEMWEB relevant, telnet muss ja nicht unterstuetzt werden.

viegener

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können