Homegear UI - Konfiguration von Authentifizierung und Reverse Proxy

Ich frage hierzu mal im Forum, weil ich keine gute Doku gefunden habe:
Die Homegear-Web-Oberflächen benutzen ja irgendwie eine eigene Benutzerauthentifizierung. Ich habe zuhause aber alles auf zentrale Benutzerverwaltung (LDAP + Client-Zertifikate) umgestellt. Da würde ich die Web-UIs gerne integrieren.
D.h. entweder für die WebUIs zumindest auf LDAP umstellen oder aber die interne Authentifizierung ganz deaktivieren und den Zugriff über einen Apache Reverse Proxy regeln (bevorzugte Variante).
Ich finde aber leider keine Info, ob und wie man das bewerkstelligen könnte.

calling @sathya

Wie gesagt, am liebsten gar keine Authentifizierung, so dass ich die laufende Lösung verwenden kann.

Muss m.E. auch nicht sein, dass jede Anwendung so etwas relevantes wie die Benutzerverwaltung neu implementiert ;-).

Hi @Larx,

du kannst den Homegear-internen Webserver (sowie auch die RPCServer) komplett ohne Authentisierung betreiben. Dazu musst du in der rpcservers.conf authType = none setzen.

Die AdminUI wird allerdings immer noch ein Login benoetigen, da dort die Homegear-Authentisierung fest in das Framework integriert ist. Beim Frontend muss ich aktuell leider passen, das konnte ich mir im Detail noch nicht anschauen.

– Micha

Danke für’s Feedback, für alles, was man in der Homegear-Konfiguration konfigurieren kann, habe ich schon diese Änderung vorgenommen. Mit geht es in der Tat um’s (Admin)UI, wo anscheinend ein völlig von den offensichtlichen Konfigurationsdateien losgelöster Mechanismus angewendet wird.

Hi @Larx,

das ist korrekt. Die AdminUI hat eine eigene Authentisierung, die zwar die Homegear-interne verwendet, sich aber nicht durch die Homegear-Configs “abstellen” laesst.

Die einzige Moeglichkeit die Authentisierung zu “automatisieren” waere derzeit per Zertifikats-Authentisierung (OAuth “kann” die AdminUI noch nicht).

– Micha

OK, dann liegt es also nicht an meiner Blödheit, dass ich nix finde ;-). So ganz verstehe ich aber nicht, was der Hintergedanke hinter dieser Vorgehensweise mit unterschiedlichen Authentifizierungsmodellen ist…

Hallo @Larx,

beim Frontend kannst du einen API-Key in der interfacedata.php oder interfacedata.custom.php definieren (mindestens 16 Zeichen lang). Diesen kannst du dann mit ?key=<Dein Schlüssel> übergeben.

Viele Grüße

Sathya

1 Like

Danke, werde ich probieren!

@sathya: Ich bin erst aus Zeitgründen nicht mehr dazu gekommen, das zu probieren. Wollte dann jetzt mal da rangehen, muss aber zugeben, dass ich bei genauerer Betrachtung mit deinem Tipp leider nix anfangen kann: Ich finde keinerlei Dokumentation zu diesem API und zu den interfacedata.php Dateien.

Wenn ich es richtig sehe, würde ich dann Programm- und keine Konfigurationsdateien ändern und müsste also nach jedem Update diese neu änderen?

Kannst du das vielleicht noch mal erläutern?

Dass da noch viel dokumentiert ist, liegt mit daran, dass das UI noch relativ Neuland ist :slight_smile:
Ich versuche mal mit dem zu antworten, was ich weiß: das UI ist über https://[homegear-ip]:2002/ui/index.php erreichbar. In der /var/lib/homegear/ui/interfacedata.custom.php ist per

[]
{
“settings”: {
“directLoginUser”: “ui”,
“directLoginApiKey”: “DeInApIkEyHiEr284aU8k1N”,
“homegear”: {
“ssl”: false
},
[]

ein API-Key definierbar. Der UI-Aufruf erfolgt dann per:
https://[homegear-ip]:2002/ui/?key=DeInApIkEyHiEr284aU8k1N

[Edit]
Weitere Infos folgen hier. Calling @benni.st :wink:

1 Like

Danke! Klappt aber leider nicht, bei mir wird der PHP-Inhalt einfach als zusätzlicher Text im Anmeldeschirm angezeigt (relativ aktueller Nightly Build von Homegear, ca. eine Woche alt).
Außerdem:
Muss die URL nicht http:// lauten, wenn ssl auf false gesetzt ist?
Es sind mehr { Klammern als } Klammern, ist das bewußt so?

http://<ip>:2001/
https://<ip>:2002/

Kann in der rpcservers.conf eingestellt werden.

Dass bei dir php-code als Text kommt ist ungewöhnlich. Das lässt vermuten, dass etwas an der config falsch ist oder PHP nicht installiert ist. Da weiß ich aber nicht genau, wie homegear die Abhängigkeit auflöst.
Bei mir sind laut dpkg -l | grep -i php keine extra PHP-Pakete installiert.

Die eckigen Klammern zum Anfang und Ende des Posts sollten darstellen, das dies lediglich eine Ergänzung ist :wink: . Deine Frage richtet sich an die Authentifizierung. Dachte das wäre nur die Ergänzung zu einer bereits funktionierenden Visualisierung. Wie ist da dein Stand? Kommst du hiermit weiter?

Die interfacedata.custom.php existiert bei mir nicht, ich habe sie neu angelegt (ohne die eckigen Klammern :wink:

Mit unpassenden auf/zu Klammern meinte ich die geschweiften Klammern, die passen m.E. nicht.

Fehlerhaftes PHP würde ich eigentlich ausschließen, da sonst ja alles funktioniert.

Mir geht es ja nur drum, die zwangsweise Benutzeranmeldung mit Homegear-eigenem Account für das Admin-UI zu umgehen, um stattdessen existentes LDAP zu nutzen. (Ich würde ja deswegen auch gerne völlig auf eine HomeGear-Benutzerverwaltung verzichten, da völlig redundant. Aber die kriegt man nicht weg.)

@Larx
erstelle eine interfacedata.custom.php in /var/lib/homegear/ui und füge folgendes ein:

    <?php 
    $customInterfaceDataJson = '
{
    "settings": {
        "directLoginUser": "homegear",
        "directLoginApiKey": "deinAPIkey08154711",
        "homegear": {
            "ssl": false
        },
        "userDefaults": {
            "firstBreadcrumb": "Mein Haus",
            "firstBreadcrumbId": "house",
            "showFloor": true,
            "languageChangeable": true,
            "twofaChangeable": true,
            "firstFactorAuthMethods": ["apiKey"],
            "secondFactorAuthMethods": []
        }
     },"mainmenu": {
    "2": {
        "name": ""
    }
}

} 
';

http://homegear-ip:2001/ui/?key=deinAPIkey08154711 sollte dir das Interface ohne Login anzeigen.

Die interfacedata.custom.php muss angelegt werden, da die interfacedata.php beim Update von Homegear überschrieben wird.

"mainmenu": {
        "2": {
            "name": ""
        }
    }

entfernt den Logout Button

2 Likes

Danke für die Hilfe, funktioniert aber leider nicht. Ich komme dann nur auf “Unauthorized”, wenn ich das Beispiel 1:1 übernehme.

Die Vorgehensweise weicht auch ein wenig von dem weiter oben verlinkten HowTo-Thread ab, u.a. ist dort sowohl die PHP-Datei als auch die zu verwendende URL anders aufgebaut.

Unauthorized ist ja schonmal nicht schlecht. Das deutet ja darauf hin, dass dein Key falsch ist.
Lade doch mal deine interfacedata.custom.php hier hoch und poste den Link, mit dem du die ui aufrufst.

1 Like

Fehler gefunden, die URL im oberen Beispiel ist falsch (“ui?key” statt “ui/?key”). Steht aber an den anderen Stellen richtig, mein Fehler.

Allerdings klappt das nur bei normalen UI und nicht beim Admin-UI. Gibt es dafür auch eine Variante (“admin” statt “ui” in die URL setzen geht schon mal nicht…).

1 Like

Danke für deinen Hinweis, habe das oben gleich korrigiert.
Die Frage nach der Authentifizierung an der Admin-UI hatte Micha je bereits mit der Möglichkeit der “Zertifikats-Authentisierung” beantwortet. An der Stelle bin ich allerdings raus.