Skip to content

Commit 3955a90

Browse files
authored
tmp: add more logs to debug the secure endpoint (#899)
* tmp: add more logs to debug the secure endpoint * tmp: add logger in the issuer config setting
1 parent 014e63b commit 3955a90

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

app/core/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ def validate_issuer_config(cls, v: Optional[Dict[str, Dict[str, Any]]]) -> Any:
259259
Returns:
260260
The validated value of the ISSUER_CONFIG field.
261261
"""
262+
logger.info("validate_issuer_config", v=v)
262263
if v is None or not isinstance(v, dict):
263264
return {}
264265
return v

app/core/security.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
logger = get_module_logger()
1313
security = HTTPBearer()
1414

15+
logger.info("issuer_config_loaded", issuer_config=ISSUER_CONFIG)
16+
1517

1618
class 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

Comments
 (0)