Google Authenticator und allowed device ==> FHEM login issue

Begonnen von FHEM_Starter, 24 Januar 2021, 15:39:12

Vorheriges Thema - Nächstes Thema

FHEM_Starter

Zitathast du mal hardware ohne "angebissenen apfel" probiert?

Hallo Frank,

auch auf "Bill Gates"-Rechnern kein Erfolg  ;)

Gruß Wolfgang

betateilchen

Zitat von: rudolfkoenig am 26 Januar 2021, 16:01:14
basicAuthExpiry im Zusammenhang mit gAuth ist komplett sinnlos, jedenfalls so wie es z.Zt. implementiert ist.

Und das bedeutet nun was?
An welcher Stelle müsste etwas geändert werden?

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: rudolfkoenig am 26 Januar 2021, 16:01:14
Selbst ohne basicAuthExpiry duerfte eine mit gAuth verifizierte Verbindung nach eine Minute Inaktivitat nach Passwort fragen.

Nicht nach einer Minute, sondern offenbar immer zur übernächsten halben Minute nach erfolgreicher Anmeldung (xx:xx:00 bzw. xx:xx:30).

Die Implementierung der Anmeldung mit gAuth() sollte keine Hochsicherheitslösung für die Anmeldung an FHEM werden, sondern einfach ein festgeschriebenes Passwort ersetzen.
Deshalb steht dieses Beispiel als Anwendungsfall in der commandref. ( ich benutze gAuth() für das Prüfen von per email an FHEM verschickter Befehle, dafür braucht es keine Cookies :) )

Bietet das allowed-device die Möglichkeit, sich eine erfolgreiche Authentifizierung intern zu merken?

Dann könnte man vielleicht sowas wie

attr <allowedDevice> basicAuth { authenticated() || gAuth("gAuth","$password") ==1 }

verwenden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

ZitatAn welcher Stelle müsste etwas geändert werden?
Wenn man trotz meines Nachtrag (s.o.) darauf besteht, dann muessten alle "genehmigten" gAuth-Zahlen abgespeichert werden, und bis X Tage (siehe basicAuthExpiry) als gueltig akzeptiert werden. Das ist mAn gAuth spezifisches, deswegen sehe ich das in GoogleAuthenticator.pm.

ZitatBietet das allowed-device die Möglichkeit, sich eine erfolgreiche Authentifizierung intern zu merken?
Ja, aber das ist an die TCP-Verbindung gebunden.
allowed kann nicht ohne Weiteres fuer eine neue Verbindung sagen, ob es ok ist oder nicht.

betateilchen

Zitat von: rudolfkoenig am 26 Januar 2021, 16:37:42
Wenn man trotz meines Nachtrag (s.o.) darauf besteht, dann muessten alle "genehmigten" gAuth-Zahlen abgespeichert werden, und bis X Tage (siehe basicAuthExpiry) als gueltig akzeptiert werden. Das ist mAn gAuth spezifisches, deswegen sehe ich das in GoogleAuthenticator.pm.

Ok, ich denke mal drüber nach. Vermutlich würde ich dann aber die Gültigkeit innerhalb von gAuth() auf einen Tag begrenzen.
Eine Anmeldung pro Tag und User halte ich durchaus für zumutbar.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEM_Starter

Hallo Rudi, hallo Udo,

zunächst einmal vielen Dank für Eure Unterstützung und Eure Hilfe.

Ich persönlich könnte mit einer Anmeldung pro User/Tag auch prima leben.

Gestattet mir eine Frage zu diesem Thema: Ist es denn prinzipiell möglich, statt den 6-stelligen Code einzugeben, die Authorisierung auch über eine Push-Notification zu erreichen? Bei Anwendungen wie Lastpass und einige andere habe ich diese Funktion und es ist einfach super komfortabel mit nur einem Klick den Zugang zu autorisieren (WAF-Faktor > 100%).

Danke und Gruß
Wolfgang

rudolfkoenig

Prinzipiell ist vieles moeglich, sowas ist aber mW nicht implementiert.
Abgesehen davon, dass ich das Konzept nicht wirklich verstanden habe :)

FHEM_Starter

ZitatAbgesehen davon, dass ich das Konzept nicht wirklich verstanden habe

.. in diesem Punkt sind wir schon zu zweit  ;D

Wo müsste so ein Ansatz denn implementiert sein?

betateilchen

Zitat von: FHEM_Starter am 26 Januar 2021, 17:00:22
Ist es denn prinzipiell möglich, statt den 6-stelligen Code einzugeben, die Authorisierung auch über eine Push-Notification zu erreichen?

Das hat jetzt aber nix mehr mit GoogleAuthenticator zu tun.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEM_Starter

Zitat von: betateilchen am 26 Januar 2021, 17:25:18
Das hat jetzt aber nix mehr mit GoogleAuthenticator zu tun.

An welcher Stelle MÜSSTE denn angesetzt werden, um eine solche Funktion zu realisieren?

rudolfkoenig

Vermutlich muesste das allowed Modul lernen mit dem push Modul zu reden, oder andersherum.
Wenn ich wuesste, was du vorhast, dann koennte ich vmtl. was Genaueres sagen.
Und nein, das ist keine Zusage, dass ich sowas bauen will.

betateilchen

#26
@FHEM_Starter: Teste mal bitte die angehängte Modulversion 98_GoogleAuth.pm

Dazu musst Du Deine Abfrage im allowed_device um den eigenen Namen des device ergänzen:

gAuth("GoogleAuth","$password","allowed_WEBMeli")

Nach diesen Änderungen sollte die Abfrage erst nach 5 Minuten erneut erscheinen.
Die 5 Minuten sind nur für Testzwecke. Wenn das funktioniert, werde ich die Gültigkeit noch ändern.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEM_Starter

Hallo Udo,

Datei heruntergeladen, reload gemacht, gAuth angepasst und siehe da: alles klappt. Erst nach 5 Minuten erneute Anmeldung notwendig. Du kannst den Timer nun anpassen.
;) ;) ;)

Vielen Dank für den Support.

Wolfgang

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEM_Starter

Zitat von: rudolfkoenig am 26 Januar 2021, 18:40:32
Vermutlich muesste das allowed Modul lernen mit dem push Modul zu reden, oder andersherum.
Wenn ich wuesste, was du vorhast, dann koennte ich vmtl. was Genaueres sagen.
Und nein, das ist keine Zusage, dass ich sowas bauen will.

Hallo Rudi,

ich kann es sicherlich nicht von der technischen Seite beschreiben, jedoch aus Sicht des Anwenders:
Heute habe ich die Möglichkeit, den Zugriff auf eine FHEM Webseite entweder via einem hardcoded Passwort oder nun auch via GoogleAuth abzusichern. Letzteres ist eine feine Sache, erhöht es doch die Sicherheit.

Was jetzt noch die Sahne auf der Haube wäre, ist folgender Ablauf:

  • Ich will eine Webseite meiner FHEM Instanz aufrufen
  • bevor der Zugriff gewährt wird, erhalte ich eine Push Notification auf mein Handy (siehe Bild 1)
  • diese Anfrage muss ich genehmigen/ablehnen (siehe Bild 2)
  • nach dem Genehmigen muss ich Authorisierungs App per Fingerabdruck (je nach Einstellungen auf dem iPhone) öffnen (siehe Bild 3) und
  • der 6-stellige Code wird an die aufrufende Instanz zurück gesendet (zumindestens ist das meine Vermutung)

Es wäre schön, wenn Du mir ein Feedback gibst.

Danke und Gruß
Wolfgang