Skip to content

Commit 61e4bc4

Browse files
als tenant inference
1 parent 3680f4f commit 61e4bc4

1 file changed

Lines changed: 17 additions & 29 deletions

File tree

src/sap_cloud_sdk/core/telemetry/middleware/starlette_a2a.py

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ def __init__(self, app: Any, attrs_var: ContextVar[Dict[str, Any]]) -> None:
3232
self._attrs_var = attrs_var
3333

3434
async def dispatch(self, request: Request, call_next: Any) -> Response:
35-
set_auth_context(_parse_ias_claims(request))
36-
token = self._attrs_var.set(_extract_ias_attrs(request))
35+
claims, attrs = _parse_request(request)
36+
set_auth_context(claims)
37+
token = self._attrs_var.set(attrs)
3738
try:
3839
return await call_next(request)
3940
finally:
@@ -81,35 +82,22 @@ def get_attributes(self) -> Dict[str, Any]:
8182
return self._attrs_var.get()
8283

8384

84-
def _parse_ias_claims(request: Request):
85-
"""Parse the Authorization header and return IASClaims, or None on failure."""
85+
def _parse_request(request: Request):
86+
"""Parse the Authorization header and return (IASClaims, telemetry_attrs)."""
8687
auth = request.headers.get("authorization", "")
87-
if not auth:
88-
return None
89-
try:
90-
return parse_token(auth)
91-
except Exception as e:
92-
logger.debug("IAS token parsing failed, skipping telemetry attrs: %s", e)
93-
return None
94-
95-
96-
def _extract_ias_attrs(request: Request) -> Dict[str, Any]:
97-
"""Parse the Authorization header and return telemetry attributes."""
98-
auth = request.headers.get("authorization", "")
99-
if not auth:
100-
return {}
101-
try:
102-
claims = parse_token(auth)
103-
except Exception as e:
104-
logger.debug("IAS token parsing failed, skipping telemetry attrs: %s", e)
105-
return {}
106-
88+
claims = None
10789
attrs: Dict[str, Any] = {}
108-
if claims.sap_gtid:
109-
attrs[ATTR_SAP_TENANT_ID] = claims.sap_gtid
110-
if claims.user_uuid:
111-
attrs[ATTR_USER_ID] = claims.user_uuid
90+
if auth:
91+
try:
92+
claims = parse_token(auth)
93+
except Exception as e:
94+
logger.debug("IAS token parsing failed, skipping telemetry attrs: %s", e)
95+
if claims is not None:
96+
if claims.sap_gtid:
97+
attrs[ATTR_SAP_TENANT_ID] = claims.sap_gtid
98+
if claims.user_uuid:
99+
attrs[ATTR_USER_ID] = claims.user_uuid
112100
origin = request.headers.get("x-sap-origin")
113101
if origin:
114102
attrs[ATTR_SAP_TRIGGER_TYPE] = origin
115-
return attrs
103+
return claims, attrs

0 commit comments

Comments
 (0)