Autor Thema: Mein Modul HomeConnect hat ein Problem mit dem csrfToken  (Gelesen 1006 mal)

Offline swhome

  • Developer
  • Full Member
  • ****
  • Beiträge: 147
Hallo liebe Entwickler,

ich habe ein Modul zur Steuerung von Hausgeräten entwickelt, welches mit einer Cloud-API des Anbieters "Home Connect" kommuniziert (Details im Wiki).

Die Anmeldung an diesen Cloud-Dienst erfolgt mit Oauth 2.0. Hierbei generiert FHEM einen Link auf den Anmeldeserver, und dieser macht nach erfolgreichem Login einen redirect zurück zu FHEM. Dieses Verfahren funktioniert seit der Einführung von csrf nicht mehr.

OAuth bietet natürlich eine Unterstützung für CSRF-Protection: Ich kann ein Attribut "state" im Login-Request definieren, welches danach im Redirect wieder auftaucht. Jedoch ist der Name "state" fest im Protokoll definiert und kann nicht zu "fwcsrf" umbenannt werden.

Daher nun meine Frage: Könnte FHEM anstelle von einer Auswertung des einen Attributs "fwcsrf" den gesamten Request-String nach dem Token durchsuchen? Oder vielleicht zusätzlich nach "state" schauen? Oder so ein Verhalten konfigurierbar machen?

Vielen Dank für ein feedback
Stefan
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 17235
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #1 am: 12 Juni 2017, 13:42:49 »
csrfToken ist optional (siehe Doku), man kann ihn auf einen festen Wert setzen, oder die zufaellig generierte vor dem Spezifizieren des Links abfragen. Die Vorschlaege zur Verbesserung kann ich erst beurteilen, wenn ich das Problem besser kenne, z.Bsp. anhand von einem konkreten Beispiel.

Offline swhome

  • Developer
  • Full Member
  • ****
  • Beiträge: 147
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #2 am: 12 Juni 2017, 14:01:42 »
Hallo Rudolf, vielen Dank für die schnelle Antwort.

Viel konkreter kann ich fast nicht werden, aber ich hab ein Beispiel. Der folgende Link ist der Redirect, den Home Connect nach Abschluß der Anmeldung generiert:

http://fhtest:8083/fhem?cmd.Test=set%20hcconn2%20auth%20&code=eyJ4LXJlZy...yJ9&state=csrf_147948606605141&grant_type=authorization_code

Er besteht aus der redirect URL, die bei der Registrierung der Applikation in der Home Connect Cloud vordefiniert werden muss, dem code den ich zur späteren Kommunikation mit dem API brauche, dem State (in den ich das csrf Token geschrieben habe) und dem vom Protokoll fest vorgegebenen "grant type" der nichts zur Sache tut.

Diese URL produziert im Log den
2017.06.12 12:51:06.215 3: FHEMWEB WEB CSRF error:  ne csrf_147948606605141. For detals see the csrfToken FHEMWEB attribute
Natürlich kann man csrf abschalten aber das ist unpopulär.
« Letzte Änderung: 12 Juni 2017, 14:15:09 von swhome »
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

Offline Markus M.

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1940
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #3 am: 12 Juni 2017, 14:05:20 »
Du kannst im der Rücksprung Adresse keine eigenen Parameter angeben?
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7490 + FRITZ!Powerline 546E

HM Aktoren/Sensoren/Winmatic/Keymatic/Thermostate, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony
https://paypal.me/mm0

Offline swhome

  • Developer
  • Full Member
  • ****
  • Beiträge: 147
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #4 am: 12 Juni 2017, 14:08:54 »
In der URL kann ich zwar Parameter angeben, aber nachdem sich das csrf Token bei jedem Start ändert, ist dies nicht praktikabel.

Das einzige Attribut was ich dynamisch belegen kann ist eben dieses "state"
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

Offline Markus M.

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1940
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #5 am: 12 Juni 2017, 14:11:31 »
Das bedeutet dass es zumindest bei statisch gesetztem Token problemlos funktioniert.
Fang doch einfach mal damit an.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7490 + FRITZ!Powerline 546E

HM Aktoren/Sensoren/Winmatic/Keymatic/Thermostate, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony
https://paypal.me/mm0

Offline swhome

  • Developer
  • Full Member
  • ****
  • Beiträge: 147
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #6 am: 12 Juni 2017, 14:37:17 »
Ok, ich werde die Verwendung eines statischen Tokens in meiner Wiki Page dokumentieren. Ist wahrscheinlich immer noch sicherer als kein Token zu benutzen.
Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

Offline Markus M.

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1940
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #7 am: 12 Juni 2017, 15:06:43 »
Ist fast genauso sicher wie ein dynamischer Wert.

Wie oft wird der Aufruf denn gebraucht? Kannst du die Rücksprungadresse im nachhinein ändern? Falls ja, probier doch ob du das nicht automatisieren kannst. Oder behandle den Call komplett im Modul statt über ein Set zu gehen.
Schau dir mal den Webhook bei Netatmo an.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7490 + FRITZ!Powerline 546E

HM Aktoren/Sensoren/Winmatic/Keymatic/Thermostate, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony
https://paypal.me/mm0

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 11669
Antw:Mein Modul HomeConnect hat ein Problem mit dem csrfToken
« Antwort #8 am: 17 Juli 2017, 10:37:21 »
Ist fast genauso sicher wie ein dynamischer Wert.

Wie oft wird der Aufruf denn gebraucht? Kannst du die Rücksprungadresse im nachhinein ändern? Falls ja, probier doch ob du das nicht automatisieren kannst. Oder behandle den Call komplett im Modul statt über ein Set zu gehen.
Schau dir mal den Webhook bei Netatmo an.

Das NUKIDevice Modul verwendet auch ein Recall/Webhook und macht das ganze Modulintern.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

 

decade-submarginal