Websocket API und TokenAuth

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

    #1

    Websocket API und TokenAuth

    Hallo Zusammen,

    ich habe endlich mal wieder etwas Zeit gefunden an meinen Projekt weiterzumachen.

    Nun stellte ich fest, dass Loxone in den kommenden Versionen wahrscheinlich ausschließlich die token Authentifizierung unterstützen wird.

    Also wollte ich meinen Code etwas aktualisieren.

    Hat jemand schon funktionierenden Code für eine Tokenauth:

    Ich versuche es gerade in python nach der Anleitung scheitere aber leider:

    Analog zu
    https://www.loxone.com/dede/wp-conte...ver.pdf?x62000

    Code:
    import urllib.request
    from hashlib import sha1
    import hmac
    import json
    import codecs
    
    base_url="http://demominiserver.loxone.com:7779"
    pw = "web"
    user ="web"
    uuid="107a0106-0254-25d5-ffffb64bfc4c285"
    
    ### STEP1: acquire Key and salt
    r = urllib.request.urlopen(base_url+"/jdev/sys/getkey2/web")
    jm = json.loads(r.read())
    key=jm['LL']['value']['key']
    
    salt=codecs.decode(jm['LL']['value']['salt'],'hex')
    print("key",key)
    print("key_hex",codecs.decode(key,'hex'))
    print("salt",salt)
    print("salt_hex",salt)
    
    ### STEP2: generate PwHash
    hash=pw+":"+codecs.decode(salt)
    print("to be hashed",hash)
    hashed = hmac.new(codecs.decode(key,'hex'), hash.encode(), sha1)
    hashed_upp=str.upper(hashed.hexdigest())
    print("PWhash finished :",hashed_upp)
    
    ### STEP3: generate USER:PwHash
    user_pwhash="web"+":"+hashed_upp
    hashed = hmac.new(codecs.decode(key,'hex'), user_pwhash.encode(), sha1)
    hashed_hex=hashed.hexdigest()
    print("user:pwhash HASH: finished :",hashed_hex)
    
    ### STEP4: Get Token URL
    build_url="/jdev/sys/gettoken/"+hashed_hex+"/"+user+"/2/"+uuid+"/pypy"
    url=base_url+build_url
    print("URL:",url)
    r = urllib.request.urlopen(url)
    jm = json.loads(r.read())
    print(jm)
    OUTPUT:

    key 43394338313943463739363031314239373330383941443536 414230353936354631304435463134
    key_hex b'C9C819CF796011B973089AD56AB05965F10D5F14'
    salt b'107a0106-0254-25d5-ffffb64bfc4c285b'
    salt_hex b'107a0106-0254-25d5-ffffb64bfc4c285b'
    to be hashed web:107a0106-0254-25d5-ffffb64bfc4c285b
    PWhash finished : D64758FC0FF07A63833E9170FCACF609B8EE6F96
    userwhash HASH: finished : 36e66314cb17ab54e4ce99d496b03e7bd918e8cf
    URL: http://demominiserver.loxone.com:777...4bfc4c285/pypy

    raise HTTPError(req.full_url, code, msg, hdrs, fp)
    urllib.error.HTTPError: HTTP Error 400: Bad Request

    Eigentlich müsste es doch so funktionieren, dass ich zumindest den Token bekomme aber ich erhalte immer eine Bad Request 400.

    UPDATE:

    Hat nichts mit dem Demoserver zu tun, gegen meinen Server zuhause kommt genau die selbe Fehlermeldung.


    Viele Grüße
    Zuletzt geändert von Gast; 09.03.2018, 08:34.
  • Gast

    #2
    Hallo kaefaetz,

    ohne es jetzt selbst probiert zu haben, hast du schon versucht den getkey2- und gettoken-Request verschlüsselt mit dem 'fenc'-Befehl zu schicken?
    Zumindest scheint es das Webinterface so zu machen:
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: lox_auth.png
Ansichten: 484
Größe: 116,7 KB
ID: 147824
    Hoffe das bringt dich weiter!

    Liebe Grüße
    Angehängte Dateien

    Kommentar

    Lädt...