feat(server): support A2A protocol#2656
Conversation
|
hey! thanks for contribution - we'll check this after the weekend. |
|
Thank you for the contribution, made a few comments here and there :) Is that all required to fully support A2A, as you wrote that I'd close #1762 which is the full integration? Also, is there a way to do the proper integration/e2e testing like e..g for existing MCP runtime to ensure it works well with A2A as the full transport? |
|
Thanks for the review! All comments are clear and I will address every point as suggested. |
|
when testing, see how |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #2656 +/- ##
==========================================
Coverage 70.50% 70.51%
Complexity 943 943
==========================================
Files 1115 1117 +2
Lines 95388 95717 +329
Branches 72589 72935 +346
==========================================
+ Hits 67256 67496 +240
- Misses 25657 25709 +52
- Partials 2475 2512 +37
🚀 New features to boost your workflow:
|
bd98498 to
b85afac
Compare
28f9cb5 to
dff37e2
Compare
|
Hello @Tyooughtul |
Hi @hubcio , I think I’ve addressed all comments from @spetz, and the PR is ready for review. I’ll keep following up and fix any issues promptly. 😊 |
|
Hi @spetz @hubcio, |
|
@Tyooughtul sure, the CI has started again, however I can see that there are still some pending comments waiting to be resolved. |
24f9624 to
0b3ec9f
Compare
|
Hi @spetz, |
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. If you need a review, please ensure CI is green and the PR is rebased on the latest master. Don't hesitate to ping the maintainers - either @core on Discord or by mentioning them directly here on the PR. Thank you for your contribution! |
- Support JWKS for A2A compliant secure agent authentication - Enable key rotation without restarting the server - Allow agents from different tenants to publish to the same Iggy bus rebase to the newest master
…ness macro Extend `#[iggy_harness]` with `jwks_server(...)` attribute to support declarative JWKS mock server setup, as suggested in review to follow the harness macro convention used for MCP and connectors. - Fix the problem as suggested - Add `jwks_server(store_path = "...")` attribute to #[iggy_harness] - Add `config_path` to server(...) for custom TOML via IGGY_CONFIG_PATH - Start WireMock MockServer and inject trusted issuer env vars before server startup - Add ServerHandle::add_env() for pre-start env var injection - Add 4 e2e tests: valid_token, expired_token, unknown_issuer, missing_token with RSA key pair and JWKS fixtures
…hardening - Add Audience enum supporting both string and array formats - Add JWKS key cache cleanup for revoked/rotated keys - Add issuer URL normalization for case-insensitive matching - Reject A2A token refresh (they have their own lifecycle) - Map A2A tokens to configured user_id instead of JWT sub claim - Prevent A2A tokens from mapping to root user
- Use IggyClient SDK instead of raw HTTP requests - Add seed function to create A2A user with permissions - Add test for array audience support - Update test fixtures and configuration
- solve conflict in Cargo.lock and DEPENDENCIES.md
- re-enable standalone consumer polling on connect
…with_jwt to make naming more concise, following review feedback.
- move normalize_issuer_url to bottom of file, add unit tests - replace HTTP client with compio official implementation - bump iggy SDK version to 0.10.1
bea5b33 to
104ed82
Compare
|
LGTM, thanks for all the changes, it's been a while :D |
|
Looks like a typo in tests to fix |
037e49d


Which issue does this PR close?
Closes #1762
Rationale
A2A protocol requires JWKS support to enable secure agent authentication with multiple identity providers. This change allows agents from different tenants to authenticate using their own public keys, and supports key rotation without requiring server restarts.
What changed?
Added JWKS support for secure agent-to-agent authentication. The implementation includes a JwksClient that fetches and caches public keys from JWKS endpoints, integrated JWKS into JwtManager for multi-tenant agent authentication, and updated HTTP middleware to support asynchronous JWT decoding. Also added TrustedIssuerConfig to support configuring multiple trusted issuers.
Local Execution
AI Usage
debug!to help me find bugs。cargo check --package serverandcargo build --package server.