diff options
author | Frederick Muriuki Muriithi | 2024-11-05 10:24:19 -0600 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2024-11-05 11:05:27 -0600 |
commit | 5a6dc1fb81bf223750f42f4697f3cd7d86b39e71 (patch) | |
tree | 55c50483e7bc9e5fb1bbd5f3a99b19d13e5c8db1 | |
parent | 95e65819fd4155f539734a5de2eb108d232703a6 (diff) | |
download | gn-auth-5a6dc1fb81bf223750f42f4697f3cd7d86b39e71.tar.gz |
Debug: Add debug logging to trace JWK fetching.
-rw-r--r-- | gn_auth/auth/authentication/oauth2/models/oauth2client.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/gn_auth/auth/authentication/oauth2/models/oauth2client.py b/gn_auth/auth/authentication/oauth2/models/oauth2client.py index df5d564..615d0ee 100644 --- a/gn_auth/auth/authentication/oauth2/models/oauth2client.py +++ b/gn_auth/auth/authentication/oauth2/models/oauth2client.py @@ -13,6 +13,7 @@ from authlib.jose import KeySet, JsonWebKey from authlib.oauth2.rfc6749 import ClientMixin from pymonad.maybe import Just, Maybe, Nothing +from gn_auth.debug import __pk__, getLogger from gn_auth.auth.db import sqlite3 as db from gn_auth.auth.errors import NotFoundError from gn_auth.auth.authentication.users import (User, @@ -61,10 +62,19 @@ class OAuth2Client(ClientMixin): def jwks(self) -> KeySet: """Return this client's KeySet.""" + logger = getLogger(__name__) jwksuri = self.client_metadata.get("public-jwks-uri") - if not bool(jwksuri): - logging.debug("No Public JWKs URI set for client!") - return KeySet([]) + ### ----- DEBUG: Remove this section ----- ### + import os + from pathlib import Path + ca_bundle = Path(os.environ.get("REQUESTS_CA_BUNDLE")) + __pk__(f"{ca_bundle} exists?", ca_bundle.exists()) + ### ----- DEBUG: Remove this section ----- ### + if not bool(__pk__( + f"CLIENT'S ({self.client_id}) JWKs URI =======> ", jwksuri)): + logger.debug("No Public JWKs URI set for client!") + return __pk__("Return empty KeySet since URI is not set =====>", + KeySet([])) try: ## IMPORTANT: This can cause a deadlock if the client is working in ## single-threaded mode, i.e. can only serve one request @@ -72,15 +82,16 @@ class OAuth2Client(ClientMixin): return KeySet([JsonWebKey.import_key(key) for key in requests.get(jwksuri).json()["jwks"]]) except requests.ConnectionError as _connerr: - logging.debug( + logger.debug( "Could not connect to provided URI: %s", jwksuri, exc_info=True) except JSONDecodeError as _jsonerr: - logging.debug( + logger.debug( "Could not convert response to JSON", exc_info=True) except Exception as _exc:# pylint: disable=[broad-except] - logging.debug( + logger.debug( "Error retrieving the JWKs for the client.", exc_info=True) - return KeySet([]) + return __pk__("Return empty KeySet after failure =====>", + KeySet([])) def check_endpoint_auth_method(self, method: str, endpoint: str) -> bool: |