Skip to content

feat!: upgrade to slim-bindings-java 3.3 and expose the verified caller identity - #16

Merged
janosSarusiKis merged 1 commit into
mainfrom
feat/slim-bindings-3
Oct 15, 2026
Merged

janosSarusiKis merged 1 commit into
mainfrom
feat/slim-bindings-3

Conversation

@muscariello

@muscariello muscariello commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Upgrades slim-bindings-java from 2.0.0 to 3.3.2 and exposes the verified caller identity to A2A handlers.

  • SlimA2AHandler sets the ServerCallContext user to a new SlimUser, built from Context.peerSubject()/peerIssuer() (the MLS session token). It falls back to the anonymous user when there is no subject. Identity is never read from request metadata.
  • Raw SlimRPC metadata is not copied into the ServerCallContext, so the slim-peer-subject/slim-payload-sig keys added by SLIM 3.4 and the routing keys never reach handlers. A unit test covers this.
  • CI uses protoc-gen-slimrpc-java 3.0.0. The regenerated stubs are unchanged.
  • README: replaced the "not available in 2.0" note with a "Caller identity" section.

Breaking: callers with a token subject now arrive as authenticated users instead of anonymous.

Testing: mvn verify passes (12 tests, 7 of them new). A manual e2e against ghcr.io/agntcy/slim:3.4.1 showed a JWT caller's sub and iss reaching the handler. It also showed that the raw metadata carries slim-peer-subject and slim-payload-sig while the handler's call context gets no state and no extensions.

Fixes #15

@muscariello muscariello added enhancement New feature or request bindings labels Oct 14, 2026
…er identity

Bump slim-bindings-java from 2.0.0 to 3.3.2 to match the .NET, Rust and
SLIM node peers, and bump protoc-gen-slimrpc-java to 3.0.0 in CI (the
regenerated stubs are unchanged).

SlimA2AHandler now builds the ServerCallContext user from the verified
MLS session token (Context.peerSubject()/peerIssuer()) as a SlimUser,
and falls back to the anonymous user when there is no subject. Identity
is never read from request metadata.

Raw SlimRPC metadata is not copied into the ServerCallContext, so the
slim-peer-subject and slim-payload-sig keys added by SLIM 3.4, and the
routing keys, never reach A2A handlers. A test covers this.

BREAKING CHANGE: requests from MLS callers whose token has a subject now
reach handlers as an authenticated SlimUser instead of the anonymous
user, so handlers that give authenticated users extra access will now
give it to any verified peer.

Fixes #15

Signed-off-by: Luca Muscariello <muscariello@ieee.org>
@janosSarusiKis
janosSarusiKis merged commit 2d5b6a1 into main Oct 15, 2026
4 checks passed
@janosSarusiKis
janosSarusiKis deleted the feat/slim-bindings-3 branch October 15, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bindings enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade to slim-bindings-java 3.3 and expose the verified caller identity

3 participants