|
1 | 1 | import logging |
2 | | - |
3 | 2 | from typing import Any |
4 | 3 |
|
5 | 4 | from a2a.client.auth.credentials import CredentialService |
@@ -49,24 +48,33 @@ async def intercept( |
49 | 48 |
|
50 | 49 | headers = http_kwargs.get('headers', {}) |
51 | 50 |
|
52 | | - match scheme_def: |
53 | | - # Case 1: Bearer token schemes (HTTP Bearer, OAuth2, OIDC) |
54 | | - case ( |
55 | | - HTTPAuthSecurityScheme() if scheme_def.scheme.lower() == "bearer" |
56 | | - ) | OAuth2SecurityScheme() | OpenIdConnectSecurityScheme(): |
57 | | - headers["Authorization"] = f"Bearer {credential}" |
58 | | - logger.debug( |
59 | | - f"Added Bearer token for scheme '{scheme_name}' (type: {scheme_def.type})." |
60 | | - ) |
61 | | - return request_payload, http_kwargs |
| 51 | + match scheme_def: |
| 52 | + # Case 1a: HTTP Bearer scheme with an if guard |
| 53 | + case HTTPAuthSecurityScheme() if scheme_def.scheme.lower() == "bearer": |
| 54 | + headers["Authorization"] = f"Bearer {credential}" |
| 55 | + logger.debug( |
| 56 | + f"Added Bearer token for scheme '{scheme_name}' (type: {scheme_def.type})." |
| 57 | + ) |
| 58 | + http_kwargs['headers'] = headers |
| 59 | + return request_payload, http_kwargs |
| 60 | + |
| 61 | + # Case 1b: OAuth2 and OIDC schemes, which are implicitly Bearer |
| 62 | + case OAuth2SecurityScheme() | OpenIdConnectSecurityScheme(): |
| 63 | + headers["Authorization"] = f"Bearer {credential}" |
| 64 | + logger.debug( |
| 65 | + f"Added Bearer token for scheme '{scheme_name}' (type: {scheme_def.type})." |
| 66 | + ) |
| 67 | + http_kwargs['headers'] = headers |
| 68 | + return request_payload, http_kwargs |
62 | 69 |
|
63 | | - # Case 2: API Key in Header |
64 | | - case APIKeySecurityScheme(in_=In.header): |
65 | | - headers[scheme_def.name] = credential |
66 | | - logger.debug( |
67 | | - f"Added API Key Header for scheme '{scheme_name}'." |
68 | | - ) |
69 | | - return request_payload, http_kwargs |
| 70 | + # Case 2: API Key in Header |
| 71 | + case APIKeySecurityScheme(in_=In.header): |
| 72 | + headers[scheme_def.name] = credential |
| 73 | + logger.debug( |
| 74 | + f"Added API Key Header for scheme '{scheme_name}'." |
| 75 | + ) |
| 76 | + http_kwargs['headers'] = headers |
| 77 | + return request_payload, http_kwargs |
70 | 78 |
|
71 | 79 | # Note: Other cases like API keys in query/cookie are not handled and will be skipped. |
72 | 80 |
|
|
0 commit comments