fix: OpenRemote token Basic Auth + corrected URLs (Keycloak container name)
- Use Basic Auth for client_secret_basic - OR_TOKEN_URL points to openremote-keycloak-1 container - Assets copied to smartcity realm DB
This commit is contained in:
28
simulator.py
28
simulator.py
@@ -550,18 +550,22 @@ def _get_or_token() -> str:
|
|||||||
if _or_token_cache["token"] and _or_token_cache["expires"] > time.time() + 60:
|
if _or_token_cache["token"] and _or_token_cache["expires"] > time.time() + 60:
|
||||||
return _or_token_cache["token"]
|
return _or_token_cache["token"]
|
||||||
try:
|
try:
|
||||||
# Utiliser le client openremote avec client secret (service account)
|
# Utiliser HTTP Basic Auth (client_secret_basic)
|
||||||
data = urllib.parse.urlencode({
|
import base64
|
||||||
"grant_type": "client_credentials",
|
creds = base64.b64encode(f"{os.environ.get('OR_CLIENT_ID')}:{os.environ.get('OR_CLIENT_SECRET')}".encode()).decode()
|
||||||
"client_id": os.environ.get('OR_CLIENT_ID', 'openremote'),
|
req = urllib.request.Request(
|
||||||
"client_secret": os.environ.get('OR_CLIENT_SECRET', ''),
|
OR_TOKEN_URL,
|
||||||
}).encode()
|
data=urllib.parse.urlencode({"grant_type": "client_credentials"}).encode(),
|
||||||
req = urllib.request.Request(OR_TOKEN_URL, data=data)
|
headers={
|
||||||
with urllib.request.urlopen(req, timeout=5) as resp:
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
result = json.loads(resp.read())
|
"Authorization": f"Basic {creds}"
|
||||||
_or_token_cache["token"] = result["access_token"]
|
}
|
||||||
_or_token_cache["expires"] = time.time() + result.get("expires_in", 300)
|
)
|
||||||
return result["access_token"]
|
with urllib.request.urlopen(req, timeout=5) as r:
|
||||||
|
token_data = json.loads(r.read().decode())
|
||||||
|
_or_token_cache["token"] = token_data["access_token"]
|
||||||
|
_or_token_cache["expires"] = time.time() + token_data.get("expires_in", 300) - 60
|
||||||
|
return _or_token_cache["token"]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f" ⚠️ OpenRemote token → {e}")
|
print(f" ⚠️ OpenRemote token → {e}")
|
||||||
return ""
|
return ""
|
||||||
|
|||||||
Reference in New Issue
Block a user