Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 1 addition & 29 deletions dash_enterprise_auth/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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):
Expand Down Expand Up @@ -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")


Expand Down
5 changes: 2 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -43,5 +42,5 @@
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
],
]
)