From 5a6dc1fb81bf223750f42f4697f3cd7d86b39e71 Mon Sep 17 00:00:00 2001
From: Frederick Muriuki Muriithi
Date: Tue, 5 Nov 2024 10:24:19 -0600
Subject: Debug: Add debug logging to trace JWK fetching.

---
 .../authentication/oauth2/models/oauth2client.py   | 25 ++++++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)

(limited to 'gn_auth/auth/authentication/oauth2')

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:
-- 
cgit v1.2.3