Ankündigung

Einklappen
Keine Ankündigung bisher.

Passwort setzen sperrt mich aus (SHNG 1.8.2 PyJWT Problem)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Passwort setzen sperrt mich aus (SHNG 1.8.2 PyJWT Problem)

    Hallo, neugierig auf SmarthomeNG habe ich es mir mal testweise installiert.
    Es läuft in einem LXC Container unter Proxmox auf Debian 10 (buster) und Python 3.7.3.

    Der erste Start verlief problemlos, ich konnte mich direkt mit einem Klick auf der Login-Seite anmelden.
    Als erste Amtshandlung wollte ich natürlich ein Passwort vergeben, um das System zumindest grundlegend abzusichern - leider bietet das etwas zu viel Sicherheit, d.h. ich kann mich mit dem vergebenen Passwort nicht einloggen.

    Das ist erstmal kein großes Problem. Wenn ich per SSH die Datei module.yaml bearbeite, dort die Zeilen mit "user" und "hashed_password" lösche und anschließend SmarthomeNG neu starte, komme ich immer wieder zurück zum Ausgangspunkt, also Login ohne Passwort.

    Nur habe ich bislang keinen Weg gefunden, ein funktionierendes Passwort zu vergeben. Was ich probiert habe:
    • Eingabe des Passwortes im Web-Interface => es wird als Hash in die module.yaml geschrieben. Nach einem Neustart kein Login mehr möglich.
    • Eingabe des Passwortes unter Dienste > Password-Hash erzeugen => es wird exakt der Hash erzeugt, den ich auch in der module.yaml sehe.
    • Eingabe des soeben erzeugten Hash als Passwort => es wird ein anderer Hash erzeugt und natürlich funktioniert da auch nicht besser.
    • Erzeugung des Hashes meines Passwortes per Command Line mit echo MeinPasswort| sha512sum => Es wird ein anderer Hash erzeugt als in SmartHomeNG.
    • Kopieren dieses Hashes in die module.yaml => funktioniert auch nicht.
    Zuerst hatte ich ein Passwort aus 20 Zufallszeichen, später habe ich auch mal nur 10 Zeichen verwendet, aber auch daran scheint es nicht zu liegen.

    Im Log sehe ich nur ein paar harmlos anmutende Warnings und einen MQTT Connection Error, der wohl auf einem noch nicht weiter konfigurierten System zu erwarten sein dürfte.

    Hat vielleicht jemand eine Idee, woran es liegen könnte, dass es mir nicht gelingt, ein Admin-Passwort zu setzen und mich damit einzuloggen?
    Ich vermute ja irgendeine simple Kleinigkeit, die ich übersehe...

    Danke für Eure Hilfe!
    Rico
    Zuletzt geändert von bmx; 18.12.2021, 17:06.

    #2
    Hallo Rico, schau doch mal ob es im Log irgendwo noch Probleme bzw. Fehler gibt oder ob alles sauber ohne Warnungen gestartet wurde.

    Kommentar


      #3
      Das hier ist der Inhalt von smarthome-warnings.log nach einem Neustart des Daemons:
      Code:
      2021-12-12 20:39:41 WARNING lib.smarthome.main -------------------- SmartHomeNG stopped --------------------
      2021-12-12 19:39:49 WARNING lib.smarthome.main -------------------- Init SmartHomeNG 1.8.2.master (0f462a1e) --------------------
      2021-12-12 19:39:49 WARNING lib.smarthome.main Running in Python interpreter 'v3.7.3 final', from directory /usr/local/smarthome
      2021-12-12 19:39:49 WARNING lib.smarthome.main - on Linux-5.4.106-1-pve-x86_64-with-debian-10.8 (pid=21292)
      2021-12-12 19:39:50 WARNING lib.smarthome.main - Nutze Feiertage für Land 'DE', Provinz 'None', 1 benutzerdefinierte(r) Feiertag(e) definiert
      2021-12-12 19:39:51 ERROR modules.mqtt Connection error: [Errno 111] Connection refused
      2021-12-12 19:39:51 WARNING modules.mqtt MQTT broker can not be reached. No messages are sent/received until the broker can be reached
      2021-12-12 20:39:53 WARNING lib.smarthome.main -------------------- SmartHomeNG initialization finished --------------------
      2021-12-12 20:39:53 ERROR plugins.smartvisu Could not find valid smartVISU directory: /var/www/html/smartvisu
      Meine Interpretation:
      Die ersten Warnings sollten eigentlich Infos sein.
      Error und Warning zu MQTT sind dadurch begründet, dass es ein völlig unkonfiguriertes Setup ist, sollten aber den Login nicht beeinflussen.
      Dann kommt wieder eine Warning, die eingentlich eine Info ist.
      Der letzte Error beschwert sich über die fehlende SmartVisu => das müsste vermutlich auch noch konfiguriert werden, sollte aber ebenfalls den Login nicht beeinflussen.

      Das ganze Problem wirkt auf mich wie ein reines Problem beim Erzeugen oder Überprüfen der Hashes.
      Die Tatsache, dass die erzeugten Hashes nicht identisch sind mit welchen, die ich auf der Kommandozeile mit sha512sum erzeuge, lässt mich aufhorchen.

      Könnte das evtl. durch eine Inkonsistenz im Encoding verursacht sein?
      Jedenfalls tritt das Problem auch mit dem Passwort "helloworld" auf, das nur aus 7-Bit-ASCII besteht und somit auch in allen ANSI-Encodings und UTF-8 identisch ist.

      Kommentar


        #4
        Ergänzung:
        Ich bekomme bei jedem fehlgeschlagenen Login-Versuch diese Warnung im Log:

        Code:
        2021-12-12  21:02:31 WARNING  modules.admin.api_auth REST_dispatch_execute: user: 'str' object has no attribute 'decode'
        Das klingt nach einem simplen Python-Implementierungsfehler.
        Leider kenne ich mich in diesem Projekt überhaupt nicht aus, so dass ich nicht weiß, wo im Quellcode ich suchen müsste.
        Aber das klingt so, als könnte es dem hier beschriebenen (und gelösten) Problem sehr ähnlich sein:
        https://stackoverflow.com/questions/...tribute-decode

        Kommentar


          #5
          Ich kann Dein Problem (leider) nicht nachvollziehen.

          Kannst Du mir sagen, welche Version des Packages PyJWT Du installiert hast?
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #6
            PyJWT Version 2.3.0 ist bei mir installiert - das ist m.E. die derzeit aktuelle Version.




            Kommentar


              #7
              Kannst Du zum Test mal PyJWT 1.7.1 installieren?
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #8

                Code:
                python3 -m pip install PyJWT==1.7.1 --upgrade --user

                Kommentar


                  #9
                  Ja!!! Mit PyJWT 1.7.1 geht es - danke für den Tipp 😊

                  Heißt das, die Requirements-Files sollten angepasst werden?

                  Derzeit steht da drin:
                  Code:
                  # SmartHomeNG-module 'admin'
                  pyjwt>=1.6.4
                  Das hier wäre wohl passender?​​​​​​​
                  Code:
                  # SmartHomeNG-module 'admin'
                  pyjwt>=1.6.4, <=1.7.1
                  ...dann kann ich ja mal anfangen, mit dem Tool rumzuspielen... 😁

                  Kommentar


                    #10
                    es ist ein Thread zur 1.8.2 angepinnt in dem das Problembeschrieben ist. Nun ist 1.8.2 aber auch schon ein wenig älter und es fehlen die Ressourcen das alles nachzuziehen. Viel Spaß beim Ausprobieren!

                    Kommentar


                      #11
                      Das Problem ist, dass für die shng v1.8.2 zwar die Kompatibilität zu PyJWT 2.0.0 hergestellt wurde, dass jedoch die 2.x Versionen zum Teil Probleme hinzugefügt haben, die in den nachfolgenden Versionen wieder weg waren...

                      Da ich jetzt weiss, dass die v2.3.0 ein neues oder anderes Problemchen hervorbringt, kann ich mich auf die Suche machen. Die Warnung

                      Code:
                      'str' object has no attribute 'decode'
                      zeigt mir, dass eine Methode von PyJWT nun einen String zurückmeldet, wo Vorgänger Versionen das nicht taten sondern wohl ein Byte Array zurück lieferten. Das fixe ich auf jeden Fall für das kommende Release.
                      Viele Grüße
                      Martin

                      There is no cloud. It's only someone else's computer.

                      Kommentar

                      Lädt...
                      X