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
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)
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
user

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
Kommentar