Autor Thema: [gelöst] HTTPMOD - Website hat login-Verfahren geändert  (Gelesen 17174 mal)

Offline Tiger84

  • New Member
  • *
  • Beiträge: 8
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #45 am: 03 April 2018, 20:17:57 »
leider nicht wirklich und dann sind bei dem Wetter auch wieder "Outdoor"-Projekte hinzugekommen...
Server: FHEM 5.7 auf Raspi 2/Jessie
Gateway: CUL USB 868MHz, 1Wire Buskoppler USB, Eservice
Sonstiges: Raumfeld, QNAP TS-451, VU+ Duo²
div. Zeug an Steckdosen und Sensoren

Offline parabacus

  • Full Member
  • ***
  • Beiträge: 290
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #46 am: 04 April 2018, 14:06:13 »
Alles klar.. - Outdoor-Aktivitäten haben bei mir zwischenzeitlich auch wieder extrem erhöhte Priorität. Ab 3. September hab ich wieder richtig Zeit für anderes..  ;D
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

Offline brembs

  • New Member
  • *
  • Beiträge: 28
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #47 am: 20 Juni 2018, 22:11:28 »
Seit ein paar Tagen, nach einer Umstellung bei SENEC funktioniert der Login wieder einmal nicht mehr:

The request was rejected because the URL contained a potentially malicious String ";"

Sieht so als als bentzten sie SpringSecurity

https://github.com/spring-projects/spring-security

was keine URL im Format /auth/oauth/authorize;jsessionid=<sessionid> mehr zulässt. Habe mal im HTTPMOD Thread eine Anfrage hinterlassen und werde etwaige Lösungen hier posten. Nicht sicher ob man das mit entsprechenden Befehlen verhindern kann, oder ob Stefan das Modul updaten muss.

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1703
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #48 am: 21 Juni 2018, 19:57:06 »
Hallo brembs,

Ich glaube nicht dass HTTPMOD geändert werden muss. Aber um die Konfiguration an das neue Login-Verfahren anzupassen muss sich jemand die Mühe machen und genau analysieren, welche Requests / Responses hin und hergeschickt werden. Mit den Replacement-Features von HTTPMOD müsste dann alles abbildbar sein.

Gruss
   Stefan

Offline Vize

  • Full Member
  • ***
  • Beiträge: 479
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #49 am: 23 Juni 2018, 15:52:06 »
Hallo Stefan,

vor ein paar Tagen habe ich das neue login-Verfahren mal mit burp aufgezeichnet.
Wenn ich (in einigen Tagen) wieder zu Hause bin, schicke ich dir mal den Mitschnitt.

Es sieht so aus, als ob nun session-tokens (oder wie die heißen) erzeugt und mitgeschickt werden.
Mal sehn, ob man das mit den replacements von HTTPMOD nachbauen kann.

Ab welcher Version von HTTPMOD funktionieren die replacements? Habe lange nicht mehr ein update gemacht...  :-[

VG
Andreas

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1703
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #50 am: 24 Juni 2018, 13:18:25 »
Hallo Andreas,

Ich glaube die Replacements sind seit 2016 drin.

Gruss
   Stefan

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1703
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #51 am: 01 Juli 2018, 14:00:05 »
Hallo Andreas,

ich habe mir das neue Login-Verfahren mit Deinen Informationen mal näher angesehen.
Es ist mit HTTPMOD machbar.

Man muss ca. 15 Schritte abarbeiten und dabei Readings für code und state sowie zwei Session IDs tracken.
Die automatische Cookie-Funktion wird dabei vermutlich auch nicht funktionieren, da man zwei JSESSIONIDs vorhalten muss.
Mit Replacements sollte das aber alles machbar sein, aber es ist sicher mühsam ;-)

Sobald ich mal ein paar Stunden Zeit dafür habe, könnte ich versuchen eine Zusatzfunktion in HTTPMOD einzubauen, die das stark vereinfacht und den Redirects automatisch folgt, dabei die richtigen Session-Cookies verwendet und so auch code und state mitnimmt.
Die Fhem HttpUtils verfolgen zwar prinzipiell Redirects, aber soweit ich das verstanden habe, werden dabei die Cookies nicht mitgenommen. Folglich muss man es bisher manuell in HTTPMOD konfigurieren.

Falls Du Dir die Mühe machen möchtest:
1) GET /login
aus der Response die erste Session ID holen und aus der Location den State holen

2) GET /auth/oauth/authorize?client_id=portale&redirect_uri=https://mein-senec.de/login&response_type=code&state=QeiJtQ
mit dem Session Cookie und dem State aus dem ersten Request
aus der Response die neue Session-Id für /auth holen

3) GET /auth/login
mit der Session Id als Cookie aus 2

4) POST /auth/login
mit der Session Id als Cookie aus 2
und mit User und Password
aus der Response die neue Session-Id holen und aus der Location den State

usw.

Aufpassen muss man dabei dass man die richtigen Session-Ids zum passenden Pfad nimmt.

Gruss
   Stefan

Offline brembs

  • New Member
  • *
  • Beiträge: 28
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #52 am: 04 Juli 2018, 06:43:43 »
OK, klingt aufwändig aber machbar, vielen Dank für die Anleitung! Hoffe, ich finde etwas Zeit um das mal aus zu probieren...

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1703
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #53 am: 04 Juli 2018, 20:34:26 »
Hallo,

anbei eine neue Version von HTTPMOD zum Testen. Es gibt zwei neue Attribute:

enableRedirects
aktiviert ein Redirect-Handling innerhalb von HTTPMOD, so dass auch Cookies zwischen Redirects verwaltet werden können.

dontRequeueAfterAuth
verhindert dass der letzte Request nach Durchführung der Login-Prozedur nochmals gesendet wird.

Für die meine-senec Website sieht eine einfache Konfiguration dann folgendermassen aus:

define senec HTTPMOD https://mein-senec.de/endkunde/api/status/getstatusoverview.php?anlageNummer=0 0
attr senec dontRequeueAfterAuth 1
attr senec enableControlSet 1
attr senec enableCookies 1
attr senec handleRedirects 1
attr senec reAuthRegex Login.Portal
attr senec sid01URL https://mein-senec.de/auth/login
attr senec sid01Header1 Accept: text/html, application/xhtml+xml, image/jxr, */*
attr senec sid01Data =&username=xxxx&password=xxxx

Ich hoffe es klappt auch bei Euch auf Anhieb ;-)

Gruss
   Stefan

Offline Vize

  • Full Member
  • ***
  • Beiträge: 479
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #54 am: 05 Juli 2018, 16:11:22 »
Hi Stefan,

es läuft!!!  ;D 8)

Vielen, vielen Dank nochmals an dieser Stelle!
Wahnsinn, was es doch für programmiertechnische Perlen hier gibt!

VG
Andreas

Offline Vize

  • Full Member
  • ***
  • Beiträge: 479
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #55 am: 05 Juli 2018, 16:55:13 »
Ich stelle mir aber die Frage, warum es über die Daten über die Website https://mein-senec.de einbinden soll, wenn ich doch genauso gut per LAN und IP auf den Speicher zugreifen kann? Hier kann ich durch den Aufruf der lokalen IP ohne Benutzername usw alle Daten sehen.

Hi,

ja, man kann auch im LAN eine HTTPMOD-Abfrage des Speichers machen.
"Nachteil" hierbei ist, dass die interne Zeitanzeige des SENEC-Speichers 1 bzw. 2 Stunden (Sommer/Winterzeit) hinkt. Dadurch passen die Tageswerte dann nicht.
Ausserdem kann man sich von der internen Seite nicht alle Sachen holen, die im Online-Portal dargestellt werden, z.B. getrennte Darstellung Netzbezug zu Netzeinspeisung oder auch die Daten zu (falls gebucht) EconamicGrid- und Gutscheinbeladungen.

Anbei mal ein screenshot meiner readingsGroup zum SENEC.

VG
Andreas
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline brembs

  • New Member
  • *
  • Beiträge: 28
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #56 am: 06 Juli 2018, 00:20:29 »
Alles funktioniert wieder! Stefan, Du bist absolute Spitze! Genial!

@Vize: Ich komme seit der Umstellung auf EconamicGrid gar nicht mehr auf den lokalen Router drauf und kann da also keine Werte mehr auslesen. Das soll so sein, haben die mir damals gesagt. Kommst Du noch auf den lokalen Router und kannst dort Werte auslesen? Wenn ja, wie machst Du das?

Offline Vize

  • Full Member
  • ***
  • Beiträge: 479
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #57 am: 06 Juli 2018, 08:02:08 »
Moin,

das kommt darauf an, welche Version des Speichers du hast.
Ohne "Umwege" geht das nur bei den V2 (Li) Speichern. Die haben keinen externen VPN-Router mehr, sondern einen integrierten.
Diese Speicher kann man dann ganz normal im LAN über die IP-Adresse erreichen.

Bei den älteren Klumpen (Pb und Li) geht das leider nicht. Dort wird dann auch keine Adresse aus deinem LAN auf dem Display angezeigt, sondern die des Senec-VPNs.

VG
Andreas

Offline brembs

  • New Member
  • *
  • Beiträge: 28
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #58 am: 06 Juli 2018, 08:16:40 »
Ah, alles klar, das erklärt es. Dauert bei mir noch 5 Jahre, bis ich mir einen neuen Speicher zulege...  8)

Offline xerion

  • Sr. Member
  • ****
  • Beiträge: 606
Antw:[gelöst] HTTPMOD - Website hat login-Verfahren geändert
« Antwort #59 am: 31 Dezember 2018, 14:33:19 »
Hi,

ja, man kann auch im LAN eine HTTPMOD-Abfrage des Speichers machen.
"Nachteil" hierbei ist, dass die interne Zeitanzeige des SENEC-Speichers 1 bzw. 2 Stunden (Sommer/Winterzeit) hinkt. Dadurch passen die Tageswerte dann nicht.
Ausserdem kann man sich von der internen Seite nicht alle Sachen holen, die im Online-Portal dargestellt werden, z.B. getrennte Darstellung Netzbezug zu Netzeinspeisung oder auch die Daten zu (falls gebucht) EconamicGrid- und Gutscheinbeladungen.

Anbei mal ein screenshot meiner readingsGroup zum SENEC.

VG
Andreas

Hallo Andreas,

wäre es vielleicht möglich, dass du die ReadingsNames und Regex hoch lädst. Ich würde das auch gerne über die Seite aus dem LAN umsetzen aber bekomme das irgendwie mit den Regex nicht hin.

 

decade-submarginal