From d9dcafb36e670b99bf5756b6b91e0b3e285ce19f Mon Sep 17 00:00:00 2001 From: michaelbabyn <41019918+michaelbabyn@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:59:44 -0400 Subject: [PATCH] Revert "load signing keys from keycloak only once for get_username in DE5" --- dash_enterprise_auth/__init__.py | 30 +----------------------------- setup.py | 5 ++--- 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/dash_enterprise_auth/__init__.py b/dash_enterprise_auth/__init__.py index 9321e6a..9ceab09 100644 --- a/dash_enterprise_auth/__init__.py +++ b/dash_enterprise_auth/__init__.py @@ -12,7 +12,6 @@ import json as _json import urllib as _urllib from typing import Any -from retrying import retry as _retry import flask as _flask import jwt as _jwt @@ -49,31 +48,6 @@ def fetch_data(self) -> Any: return _json.load(response) -@_retry(wait_exponential_multiplier=1000, wait_exponential_max=20000) -def _get_public_keys(jwks_client): - return jwks_client.get_signing_keys() - - -jwks_url = _os.getenv("DASH_JWKS_URL", "") -jwks_client = UaPyJWKClient(jwks_url) -public_keys = None -if jwks_url: - public_keys = _get_public_keys(jwks_client) - - -def _get_public_key(token): - kid = _jwt.get_unverified_header(token)["kid"] - for key in public_keys: - if key._jwk_data["kid"] == kid: - return key.key - - -def _get_de5_user_data(jwt_id_token): - public_key = _get_correct_public_key(jwt_id_token) - decoded_token = _jwt.decode(jwt_id_token, public_key, algorithms=["RS256"], audience="dash") - return decoded_token - - def _need_request_context(func): @_ft.wraps(func) def _wrap(*args, **kwargs): @@ -229,11 +203,9 @@ def get_username(): :return: The current user. :rtype: str """ + data = get_user_data() if not _os.getenv("DASH_JWKS_URL"): - data = get_user_data() return data.get("username") - token = _get_decoded_token("kcIdToken") - data = _get_de5_user_data(token) return data.get("preferred_username") diff --git a/setup.py b/setup.py index df9c169..fc3c3d2 100644 --- a/setup.py +++ b/setup.py @@ -27,8 +27,7 @@ "requests[security]", "PyJWT", 'cryptography;python_version>="3.7"', - 'cryptography<3.4;python_version<"3.7"', - "retrying==1.3.3", + 'cryptography<3.4;python_version<"3.7"' ], python_requires=">=3.6", url="https://plotly.com/dash", @@ -43,5 +42,5 @@ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", - ], + ] )