Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. simple-api mit Benutzerauthentifizierung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    simple-api mit Benutzerauthentifizierung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Diginix
      Diginix last edited by Diginix

      Seit JS-Controller 2.x funktioniert mein eingeschränkter Benutzer für simple-api requests nicht mehr um Objekte zu lesen oder schreiben.

      Einstellungen des Adapters:
      6ad834e3-5b20-4f6a-8afd-b88f976a1756-image.png

      Mein User (apiuser) ist in der Gruppe (api_and_web). Diese Gruppe darf Objekte und Zustände Lesen und Schreiben.

      gruppe.png

      Das boolesche Objekt welches ich steuern möchte hat als Besitzer diese Gruppe.

      objekt.png

      Beispiel URLs wären:

      http://ip:port/getPlainValue/javascript.0.Objects.Door_Window.Gate_Switch?user=apiuser&pass=******
      http://ip:port/set/javascript.0.Objects.Door_Window.Gate_Switch?value=true&user=apiuser&pass=******
      http://ip:port/set/javascript.0.Objects.Door_Window.Gate_Switch?value=false&prettyPrint&user=apiuser&pass=******
      

      Leider erhalte ich seit dem JS-Controller Update nur noch diese Ausgabe im Browser:

      error: permissionError
      

      Im Log (Level Debug) landet leider nichts brauchbares:

      2019-11-17 10:08:24.734  - [32minfo [39m: host.BT3-PRO instance system.adapter.simple-api.0 started with pid 31779
      2019-11-17 10:08:25.906  - [34mdebug [39m: simple-api.0 (31779) Redis Objects: Use Redis connection: 127.0.0.1:9001
      2019-11-17 10:08:25.954  - [34mdebug [39m: simple-api.0 (31779) Objects client ready ... initialize now
      2019-11-17 10:08:25.959  - [34mdebug [39m: simple-api.0 (31779) Objects create PubSub Client
      2019-11-17 10:08:25.960  - [34mdebug [39m: simple-api.0 (31779) Objects client initialize lua scripts
      2019-11-17 10:08:25.979  - [34mdebug [39m: simple-api.0 (31779) objectDB connected
      2019-11-17 10:08:25.982  - [34mdebug [39m: simple-api.0 (31779) Redis States: Use Redis connection: 127.0.0.1:9000
      2019-11-17 10:08:25.995  - [34mdebug [39m: simple-api.0 (31779) Objects connected to redis: 127.0.0.1:9001
      2019-11-17 10:08:26.009  - [34mdebug [39m: simple-api.0 (31779) States create PubSub Client
      2019-11-17 10:08:26.012  - [34mdebug [39m: simple-api.0 (31779) statesDB connected
      2019-11-17 10:08:26.037  - [34mdebug [39m: simple-api.0 (31779) States connected to redis: 127.0.0.1:9000
      2019-11-17 10:08:26.416  - [32minfo [39m: simple-api.0 (31779) starting. Version 2.3.2 in /opt/iobroker/node_modules/iobroker.simple-api, node: v10.17.0
      2019-11-17 10:08:26.496  - [32minfo [39m: simple-api.0 (31779) simpleAPI server listening on port 8285
      2019-11-17 10:08:26.497  - [32minfo [39m: simple-api.0 (31779) Allow states only when user is owner: false
      2019-11-17 10:08:26.504  - [32minfo [39m: simple-api.0 (31779) http server listening on port 8285
      2019-11-17 10:08:40.080  - [34mdebug [39m: simple-api.0 (31779) Logged in: apiuser
      2019-11-17 10:08:46.574  - [32minfo [39m: admin.0 (919) successful connection to socket.io from ::ffff:192.168.2.86
      2019-11-17 10:08:51.953  - [34mdebug [39m: simple-api.0 (31779) system.adapter.admin.0: logging true
      2019-11-17 10:09:26.675  - [34mdebug [39m: simple-api.0 (31779) Logged in: apiuser
      

      @crycode Da genau das bei dir ja anscheinend funktioniert, wäre es toll wenn du mal Screenshots deiner Einstellungen zum Vergleich zeigen könntest.

      Gleiche Bitte geht ebenso an alle anderen, die simple-api 2.3.2 mit nicht-admin User und Authentifizierung per URL Parameter verwenden.

      1 Reply Last reply Reply Quote 0
      • crycode
        crycode Developer last edited by

        Hier mein Setup:

        js-controller 2.1.0
        simple-api 2.3.2

        API-Nutzer: homepi (system.user.homepi) in der Gruppe Benutzer (system.group.user) mit folgenden Rechten:

        Screenshot_2019-11-17 users - ioBroker(1).png
        Screenshot_2019-11-17 users - ioBroker.png

        Als Datenpunkt schreibe ich einen Text in custom.0.telegram-send mit diesen Rechten:
        Screenshot_2019-11-17 objects - ioBroker.png

        Die URL sieht bei mir so aus:

        https://host:port/setValueFromBody/custom.0.telegram-send?user=homepi&pass=******
        

        Beispielaufruf mit cURL:

        curl -k --data "Der Text" "https://host:port/setValueFromBody/custom.0.telegram-send?user=homepi&pass=******"
        

        Scheint soweit alles zu funktionieren.

        1 Reply Last reply Reply Quote 0
        • Diginix
          Diginix last edited by Diginix

          Danke @crycode. Was ich bei dir gar nicht verstehe ist dass dein Objekte noch komplett Admin und Administrator gehört.
          Das hatte ich früher auch so und da ging es nie. @apollon77 machte mich dann auf den Fehler der nicht korrekten Gruppe aufmerksam. Ich sehe aber gerade dass du den letzten Haken für "Jeder darf Schreiben" aktiviert hast.

          Als ich simpl-api nun mal als Erweiterung für web.0 aktiviert hatte und mich per Browser Login authentifiziert hatte, erhielt ich diese Fehlermeldung:

          File javascript.0.Objects.Door_Window.Gate_Switch not found: permissionError
          

          Als web.0 Erweiterung ist aber keine Authentifizierung per URL Parameter möglich.

          Dann habe ich nochmal eine neue Gruppe erzeugt und es mal mit einem Objekt außerhalb von javascript.0 probiert was erstaunlicherweise funktionierte. Danach funktioniert nun vorerst auch mein Objekt unterhalb von javascript.0 aber bisher nur lesend.

          Wenn ich wie @crycode den Hakeb für "jeder darf schreiben" beim Objekt setze, dann funktioniert es bei mir auch mit /set URLs. Aber das ist unlogisch wenn die Gruppe schon schreiben darf und das Objekt auch der Gruppe gehört.
          @apollon77 Warum muss dann "jeder" schreiben dürften?

          1 Reply Last reply Reply Quote 0
          • crycode
            crycode Developer last edited by

            @Diginix sagte in simple-api mit Benutzerauthentifizierung:

            Wenn ich wie @crycode den Hakeb für "jeder darf schreiben" beim Objekt setze, dann funktioniert es bei mir auch mit /set URLs. Aber das ist unlogisch wenn die Gruppe schon schreiben darf und das Objekt auch der Gruppe gehört.

            Das sollte das Problem doch schon mal eingrenzen.

            Bei mir läuft simple-api nicht als web.0 Erweiterung sondern einzeln. Ich kann mich noch dunkel erinnern, dass bei meiner Einrichtung der simple-api damals irgendwas mit http nicht funktionierte, weshalb ich dann https aktiviert hatte. Was das genau war bekomm ich grad aber leider nicht mehr zusammen.

            Diginix 1 Reply Last reply Reply Quote 0
            • Diginix
              Diginix @crycode last edited by

              @crycode Läuft bei mir auch nicht als web.0 Erweiterung weil sonst die Authentifizierung nicht per URL Parameter funktioniert. Hab nur im Test mal alle Einstellungen durchprobiert.
              Mit dem Haken für "jeder darf schreiben" bei meinem Objekt kann ich vorerst leben.
              Aber da scheint doch ein Bug drin zu sein wenn die Gruppe, die es eigentlich darf, es doch nicht darf.

              apollon77 1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 @Diginix last edited by

                @Diginix Frage: "Reicht jeder darf lesen"?

                1 Reply Last reply Reply Quote 0
                • Diginix
                  Diginix last edited by

                  Ich glaube ich habe nun die Lösung und es ist kein Bug.

                  Die Gruppe muss zusätzlich "list" als Berechtigung für Zustand und Objekt erhalten seit JS-Controller 2.x

                  gruppe_neu.png

                  Hatte @apollon77 mir auch schon mal als Tipp gegeben. Nach Änderungen der Gruppenrechte muss aber die simple-api Instanz jedes mal neu gestartet werden damit die Änderungen auch greifen. Das hatte ich bisher nicht gewusst.

                  apollon77 1 Reply Last reply Reply Quote 2
                  • apollon77
                    apollon77 @Diginix last edited by

                    @Diginix Aahh das kann sein. Ja müssen dringend das rechtekram mal Dokumentieren.

                    Bzw würdest du mal (gern hier als Post oder so) mal für einen User der so eine user Einstellung mag wie du das mal zusammenschreiben was wie und warum gesetzt sein muss ?! Dann würde ich das als Grundlage mal nehmen für sowas.

                    1 Reply Last reply Reply Quote 0
                    • apollon77
                      apollon77 last edited by

                      Bzw zusätzlich (grad nachgedacht) wäre ggf ein Admin issue sinnvoll mit „was sollte wann automatisch im rechte Dialog gesetzt werden wenn man was will“. Wie „Objekt read und list muss an sein wenn state * gewollt ist “ oder so ... das andere User da gar nicht rein rennen ?!

                      Hast du da Ideen?

                      Diginix 1 Reply Last reply Reply Quote 0
                      • Diginix
                        Diginix @apollon77 last edited by

                        @apollon77
                        Ich überlege mal. Aber für den Anfang würde es reichen in der github Anleitung von simple-api vllt 1-2 konkrete Beispiele zu dokumentieren. Mit allem was eben auch bei der Nutzerverwaltung dazu gehört.
                        Komfort Features wären schön, aber kosten Entwicklung und da es ja prinzipiell funktioniert, wäre diese Zeit an anderen Stelle für wirklich neues oder Bugfixing sinnvoller.

                        apollon77 1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 @Diginix last edited by

                          @Diginix Da du so ein Setup live hast wäre cool wenn du mir da input geben könntest (wenn Du magst und Zeit hast) ... Dann packe ich es da rein

                          Diginix 1 Reply Last reply Reply Quote 0
                          • Diginix
                            Diginix @apollon77 last edited by

                            @apollon77 Ja, das kriegen wir hin. Ich schreib da mal was zusammen mit Screenshots der entscheidenden Bereiche.

                            1 Reply Last reply Reply Quote 1
                            • apollon77
                              apollon77 last edited by

                              Cooool Thx!

                              Poste es hier im Forum, dann ists direkt MDund ich kann es einfacher in die Doku übernehmen 😉

                              1 Reply Last reply Reply Quote 0
                              • X
                                xxxspxxx last edited by

                                @Diginix Hast du das jetzt irgendwo dokumentiert? Habe auch totale Probleme mit der Authentifizierung von Simple-api diese läuft bei mir auch getrennt (eigenständig) vom Web.0

                                Ich bekomme als an neu angelegter Benutzer und Gruppe nicht hin. Das mit "Jeder schreiben" habe ich noch nicht benutzt wenn ich das richtig verstanden habe wird das nicht benötigt oder?

                                Diginix 1 Reply Last reply Reply Quote 0
                                • Diginix
                                  Diginix @xxxspxxx last edited by Diginix

                                  @xxxspxxx Ich habe mir alles lokal in einem Gedächtnisprotokoll gespeichert um daraus mal einen Auszug für eine Anleitung zu schreiben. Bisher ist das mangels Zeit nicht geschehen. Doku schreiben mag wahrscheinlich niemand. 😉

                                  Hier mal meine Stichpunkte:

                                  • Objekt gehört Gruppe oder dem Nutzer oder alle dürfen es lesen/schreiben
                                  • Gruppe hat mind. lesen, list, schreiben
                                  • Verwendeter Benutzer ist in der Gruppe dem das Objekt gehört oder ist Besitzer vom Objekt
                                  • simple-api Instanz muss neu gestartet werden wenn Berechtigungen angepasst wurden
                                  • Für Authentifizierung per URL Parameter muss der separate simple-api Adapter genutzt werden, nicht die eingebaute vom web Adapter
                                  • Benutzername und Passwort darf keine Großbuchstaben enthalten

                                  Vielleicht hilft dir das schon. Ansonsten poste mal Screenshots der Gruppe, dem User und den Berechtigungseinstellungen vom Objekt, welches gelesen/geschrieben werden soll.

                                  1 Reply Last reply Reply Quote 0
                                  • X
                                    xxxspxxx last edited by

                                    Krass schnelle Antwort :=) Danke
                                    Also deine Bedingungen habe ich alle auch so gesetzt.

                                    Glaube ich hatte alles richtig haben aber beim Login-namen einen Großbuchstaben benutzt. Kann das sein? Habe gerade aus frust einfach mal test und pw auch test1 angelegt und dann ging es sofort?

                                    Diginix 1 Reply Last reply Reply Quote 0
                                    • Diginix
                                      Diginix @xxxspxxx last edited by

                                      @xxxspxxx Ok, bei mir war glaub immer alles klein geschrieben. Kannst ja noch mal die Gegenprobe machen und berichte.
                                      Sicherheitshalber immer die simple-api Instanz neustarten.
                                      Sollte die Schreibweise relevant sein bzw mit Großbuchstaben Probleme machen, würde ich diesen Punkt mit aufnehmen.

                                      1 Reply Last reply Reply Quote 0
                                      • X
                                        xxxspxxx last edited by

                                        Ja habe ich sofort überprüft. Vielleicht machst du das kurz auch bei dir noch als gegenprobe. Glaube unter Linux gibt es keine Großbuchstaben bei Benutzernamen und hostnamen? Vielleicht ist es extra so. Http login geht aber halt mit dem Benutzer. TestTestUser den ich soeben nochmal angelegt habe.

                                        Diginix 1 Reply Last reply Reply Quote 0
                                        • Diginix
                                          Diginix @xxxspxxx last edited by

                                          @xxxspxxx Ich kann es bestätigen. Großbuchstaben im Nutzernamen führen zu einem "permission error", auch wenn der user richtig geschrieben per URL Parameter übergeben wird.
                                          Kann sein dass es ein Bug ist, aber für den Moment kann man das Problem ja durch Verwendung von ausschließlich Kleinbuchstaben für user+pass umgehen.

                                          apollon77 C 2 Replies Last reply Reply Quote 0
                                          • apollon77
                                            apollon77 @Diginix last edited by

                                            @Diginix Bitte Issue öffnen

                                            Diginix 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            410
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            simple-api
                                            6
                                            26
                                            2745
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo