1212logger = get_module_logger ()
1313security = HTTPBearer ()
1414
15+ logger .info ("issuer_config_loaded" , issuer_config = ISSUER_CONFIG )
16+
1517
1618class JWKSManager :
1719 """
@@ -34,11 +36,15 @@ def get_jwks_client(self, issuer: str) -> Optional[PyJWKClient]:
3436 Returns:
3537 Optional[PyJWKClient]: The JWKS client for the specified issuer, or None if not found.
3638 """
39+ logger .info (
40+ "get_jwks_client_called" , issuer = issuer , issuer_config = self .issuer_config
41+ )
3742 if not self .issuer_config or issuer not in self .issuer_config :
3843 return None
3944 if issuer not in self .jwks_clients :
4045 try :
4146 cfg = self .issuer_config [issuer ]
47+ logger .info ("creating_jwks_client" , jwks_uri = cfg .get ("jwks_uri" ))
4248 self .jwks_clients [issuer ] = PyJWKClient (
4349 cfg ["jwks_uri" ], cache_jwk_set = True , lifespan = 3600 , timeout = 10
4450 )
@@ -65,6 +71,10 @@ def get_issuer_from_token(token: str) -> Optional[str]:
6571 logger .info ("get_issuer_from_token" , token = token )
6672 try :
6773 unverified_payload = decode (token , options = {"verify_signature" : False })
74+ logger .info (
75+ "unverified_payload" ,
76+ unverified_payload = unverified_payload ,
77+ )
6878 return unverified_payload .get ("iss" )
6979 except Exception :
7080 return None
@@ -91,6 +101,7 @@ def extract_user_info_from_token(token: str) -> Tuple[Optional[str], Optional[st
91101 # sub is always present
92102 if "sub" in payload :
93103 user_id = payload ["sub" ].split ("/" )[- 1 ]
104+ logger .info ("user_info_extracted" , user_id = user_id , user_email = user_email )
94105
95106 return user_id , user_email
96107 except Exception as e :
@@ -125,22 +136,28 @@ async def validate_jwt_token(
125136 ):
126137 raise HTTPException (status_code = 401 , detail = "Missing or invalid token" )
127138 token = credentials .credentials
139+ logger .info ("token_received" , token = token )
128140 issuer = get_issuer_from_token (token )
141+ logger .info ("issuer_extracted" , issuer = issuer )
129142 if not issuer :
130143 raise HTTPException (status_code = 401 , detail = "Issuer not found in token" )
131144 jwks_client = jwks_manager .get_jwks_client (issuer )
145+ logger .info ("jwks_client_result" , jwks_client = bool (jwks_client ))
132146 if not jwks_client or not jwks_manager .issuer_config :
133147 raise HTTPException (status_code = 401 , detail = "Untrusted or missing token issuer" )
134148 cfg = jwks_manager .issuer_config [issuer ]
149+ logger .info ("jwks_config_used" , cfg = cfg )
135150 try :
136151 signing_key = jwks_client .get_signing_key_from_jwt (token )
152+ logger .info ("signing_key_obtained" , signing_key = str (signing_key ))
137153 payload = decode (
138154 token ,
139155 signing_key .key ,
140156 algorithms = cfg ["algorithms" ],
141157 audience = cfg ["audience" ],
142158 options = {"verify_exp" : True },
143159 )
160+ logger .info ("jwt_token_validated" , payload = payload )
144161 return payload
145162 except (PyJWKClientError , PyJWTError ) as e :
146163 logger .warning ("jwt_validation_failed" , error = str (e ), issuer = issuer )
0 commit comments