WebSocket Verbindung zum Miniserver aufbauen (Authentication)

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

    #1

    WebSocket Verbindung zum Miniserver aufbauen (Authentication)

    Hallo,

    ich hatte Probleme damit, einen Websocket zum Miniserver aufzubauen.
    Die API-Doku beschreibt den Ablauf sehr gut, allerdings bin ich am Hashing gescheitert. Das ist etwas wage beschrieben.
    Hier ein kl. Javascript-Snippet zum Authentifizieren am Miniserver. (Die Bibliothek CryptoJS wird vorausgesetzt - Loxone verwendet diese ebenfalls)

    Adresse: ws://IP-DES-MINISERVER:80/ws/rfc6455

    1. Befehl "jdev/sys/getkey" - liefert das Secret für den Hash
    2. Hashing

    var passphrase = CryptoJS.enc.Utf8.parse("userasswort"); //UTF8 encodet
    var secret = CryptoJS.enc.Hex.parse(dataObj.LL.value); //HEX encodet
    var securityHash = CryptoJS.HmacSHA1(passphrase, secret).toString(CryptoJS.enc.Hex); //HmacSHA1 encrypted

    3. Befehl "authenticate/{hash}"

    Dann solltet ihr eine 200 OK Antwort bekommen.

    Anschließend muss die Status-Updates noch aktiviert werden.

    4. Befehl "jdev/sps/enablebinstatusupdate"

    Jetzt bekommt ihr alle Änderungen des Miniservers per Message (websocket.onMessage()) mitgeteilt. Die Messages beinhalten keine Text sondern BLOB-Objekte. (Aber soweit bin ich noch nicht )

    Vielleicht hilft euch das weiter, falls Ihr so wie ich noch an der Authentifizierung scheitert


    (Loxone Config 7.4 - Firmware 7.4.4.14)


    Zuletzt geändert von Gast; 13.07.2016, 21:52.
  • Gast

    #2
    Hallo php1989,

    Das funktioniert für mich. Dankeschön.
    Hast du Nachrichten mit BLOB Objekte ?

    Bis später.

    Kommentar

    • AME
      Dumb Home'r
      • 24.12.2015
      • 15

      #3
      Hallo php1989,
      ich beiße mir auch gerade am Hashing die Zähne aus, möchte es in C# umsetzen.
      Könntest du dein Test JS Projekt hochladen, damit ich meinen Hash mit deinen Hash vergleichen kann?

      Danke

      Kommentar

      • beeper
        Smart Home'r
        • 31.08.2015
        • 47

        #4
        Hi, ich habe da auch mal vor längerer Zeit mit rumgespielt in C#. Ich hatte das initial für Windows Phone geplant gehabt und es auch nicht so richtig hinbekommen mit dem Hashing. Letztendlich lag es bei mir an der Unterschiedlichen Implementierung des HmacSHA1. Sprich meine Variante aus dem C# Framework kam zu einem anderen Ergebnis als die JavaScript Lib. Ich musste allerdings aufgrund von Windows Phone auf eine alternative ausweichen. Ich bin mir auch nicht mehr sicher ob ich das später in Griff hatte - zumindest war ich damals dann gescheitert vom WP eine WebSocket Verbindung aufzubauen

        Kommentar

        • AME
          Dumb Home'r
          • 24.12.2015
          • 15

          #5
          Guten Abend
          ich habe jetzt eine C# Funktion geschrieben, welche für die Authentifizierung an meinem Loxone MiniServer funktioniert - getestet auf Windows 10 und Windows 10 mobile!

          Als Parameter muss als "Message" der Benutzer und Kennwort mit Doppelpunkt getrennt, z.B. "web:web" und der Key, welchen man über "jdev/sys/getkey" bekommt, übergeben werden:

          public string CreateLoxoneHash(string Message, string LoxoneKey)
          {
          IBuffer LoxoneKeyBuffer = CryptographicBuffer.DecodeFromHexString(LoxoneKey) ;
          MacAlgorithmProvider HmacSha1Provider = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1");
          CryptographicKey LoxoneHmacSha1Key = HmacSha1Provider.CreateKey(LoxoneKeyBuffer);
          IBuffer MessageBinaryData = CryptographicBuffer.ConvertStringToBinary(Message, BinaryStringEncoding.Utf8);
          IBuffer MessageHashBuffer = CryptographicEngine.Sign(LoxoneHmacSha1Key, MessageBinaryData);
          string MessageHash = CryptographicBuffer.EncodeToHexString(MessageHashB uffer);
          return MessageHash;
          }

          Hoffe es hilft den einen oder anderen...

          Kommentar


          • svethi
            svethi kommentierte
            Kommentar bearbeiten
            Visual Studio ist mir nicht fremd :-) eher zwar VB aber C# geht zur Not auch ... was genau machst Du da?
        • AME
          Dumb Home'r
          • 24.12.2015
          • 15

          #6
          Mir schwebt eine W10 UWP App für Desktop und Mobile vor, um einige Funktionen und Daten schnell Verfügbar zu haben.
          Zurzeit teste ich etwas herum, um die Möglichkeiten zu verstehen.

          Kommentar


          • svethi
            svethi kommentierte
            Kommentar bearbeiten
            Ich bin zwar zur Zeit ziemlich eingebunden, aber sowas wünschen sich ja auch viele. Für Mac haben die jetzt auch ne einzelne App entwickelt. Warum die das für Windows nicht machen, obwohl die Config ja auch für Windows ist, versteht keiner.
            Vllt kann ich Dir ja etwas zur Seite stehen.
        Lädt...