FHEMWEB und allowed: Anleitungen unklar

Begonnen von IPWF, 15 April 2023, 15:43:15

Vorheriges Thema - Nächstes Thema

IPWF

Hallo,

meine FHEM-Installation möchte ich gern mit Benutzername und Passwort absichern und habe dazu Anleitungen in der Commandref, im Wiki, im Forum sowie auch im Internet und in einem Buch gelesen und bin auf widersprüchliche Angaben bezüglich der Vorgehensweise gestoßen.

Oft wird folgende Eingabe empfohlen: z.B.
attr WEB basicAuth <base64-Code>Dann soll automatisch ein allowedWEB-Device erzeugt werden.
Wenn ich dies eingebe, kommt jedoch eine Fehlermeldung.

In der Commandref und im Wiki habe ich zu "allowed" gelesen, dass man das allowedWEB-Device direkt anlegen soll: z.B.
define allowedWEB allowedDa dies funktioniert, gehe ich davon aus, dass es so richtig ist.

FRAGE 1: Ist es richtig, dass basicAuth jetzt grundsätzlich im allowed-Device und nicht mehr im WEB-Device gesetzt wird ?

Eine weitere Frage habe ich zum basicAuth-Wert.
In vielen Anleitungen wird beschrieben, dass man diesen in der Linux-Konole mit
echo -n <benutzername>:<passwort> | base64erzeugen soll.
Laut Commndref und Wiki kann man dann folgendes eingeben:
1.) attr allowed basicAuth <base64-Code>
2.) attr allowed basicAuth SHA256:<SHA256-Code>
3.) attr allowed basicAuth {"$user:$password" eq "fhemuser:secret"}

FRAGE 2: ist die Eingabeform 3.) prinzipiell gleichwertig zu 1.) bzw. 2.), oder wird bei einer Eingabe in dieser Form das Passwort weniger sicher gespeichert ?

Wenn 3.) gleichwertig mit den anderen Eingabeformen ist, würde ich diese bevorzugen, weil man dann nicht noch vorher einen Code erzeugen muß.

Noch eine Anmerkung zu meiner Installation:
Ich habe ein aktuelles FHEM und möchte die Weboberfläche ausschließlich aus meinem eigenen Netz aufrufen, nicht von unterwegs oder so. Deshalb reicht für mich nach meinem Verständnis die Absicherung über basicAuth (und HTTPS).
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04 LTS
Funkschnittstelle EnOcean

rudolfkoenig

Zu Frage #1:
Kurz: ja.
Lang: Die fruehere FHEMWEB und telnet Authentifizierung wurde Ende 2015 bzw. mit FHEM 5.8 in einem separaten Modul (allowed) ausgelagert, und damit ein Framework erstellt, was Authentifizierung und Authorisierung auch fuer andere Module (z.Bsp MQTT2_SERVER) ermoeglicht.
Das FHEMWEB(!) basicAuth Attribut hat danach eine allowed Instanz angelegt (um eine Migration zu unterstuetzen), dieses Feature wurde aber mit FHEM 6.2 entfernt.

Zu Frage #2:
Bei der Variante 1 und 3 kann man Benutzername/Passwort mehr oder weniger einfach rausfinden, wenn(!) man Zugriff auf die FHEM Konfiguration hat, oder die Detailseite der FHEMWEB Instanz anschauen kann. Bei der Variante 2 ist das nicht der Fall. Diese Variante erzeugt man mit "set allowed basicAuth <username> <password>".
Wenn man keinen Zugriff auf die Seite hat (d.h. von "Aussen", man sieht nur das Anmelde-Dialog), sind alle drei Verfahren gleichwertig.
Mit Variante 3 kann man auch weitere Verfahren integrieren, wie z.Bsp. LDAP (aka Active-Directory) oder MFA/TOTP.


IPWF

Danke für die schnelle und ausführliche Antwort.
Damit sind meine Fragen beantwortet.
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04 LTS
Funkschnittstelle EnOcean