Skip to content

Commit 3b17cce

Browse files
�[38;5;243m 1�[0m �[38;5;249mfix(security): skip JWT audience check when audience is empty�[0m
�[38;5;243m 2�[0m �[38;5;243m 3�[0m �[38;5;249mKeycloak often issues aud=account unless a mapper is configured; empty�[0m �[38;5;243m 4�[0m �[38;5;249mJWTConfig.audience must not enable verify_aud.�[0m �[38;5;243m 5�[0m Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 10f534a commit 3b17cce

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

src/agentomatic/security/jwt_auth.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,12 @@ async def dispatch(self, request: Request, call_next: Any) -> Response:
214214
decode_kwargs["issuer"] = self._config.issuer
215215
if self._config.audience:
216216
decode_kwargs["audience"] = self._config.audience
217+
else:
218+
# Empty audience → do not enforce ``aud`` (Keycloak often
219+
# issues ``aud=account`` unless a mapper is configured).
220+
opts = dict(decode_kwargs.get("options") or {})
221+
opts["verify_aud"] = False
222+
decode_kwargs["options"] = opts
217223

218224
claims: dict[str, Any] = _jwt_lib.decode(token, **decode_kwargs) # type: ignore[union-attr]
219225
except ExpiredSignatureError:

0 commit comments

Comments
 (0)