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 68.52% 68.60% +0.07%
Complexity 656 656
============================================
Files 743 744 +1
Lines 62808 63000 +192
Branches 59221 59413 +192
============================================
+ Hits 43039 43220 +181
- Misses 17656 17660 +4
- Partials 2113 2120 +7
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 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. |
- 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
24f9624 to
0b3ec9f
Compare
|
Hi @spetz, |


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.