• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 35202690433
71%

Build:
DEFAULT BRANCH: main
Ran 17 Sep 2026 09:08AM UTC
Jobs 1
Files 924
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

17 Sep 2026 08:59AM UTC coverage: 70.707%. Remained the same
35202690433

push

github

web-flow
feat(authserver): accept ID-JAG assertions with a bound JWT-bearer handler (#6677)

Add bound JWT-bearer handler for ID-JAG assertions

The embedded authorization server's RFC 7523 JWT-bearer grant only
accepted plain assertions: JWTBearerHandler deliberately declines any
assertion whose JOSE typ is oauth-id-jag+jwt, reserving it for a bound
handler that did not exist. An IdP-minted Identity Assertion
Authorization Grant (draft-ietf-oauth-identity-assertion-authz-grant,
the inbound half of Cross App Access) therefore could not be redeemed
at the token endpoint at all - no handler claimed the grant and fosite
returned its generic invalid_request.

Add IDJAGHandler, claiming exactly the assertions the plain handler
declines. Bound means client authentication is never skipped: fosite
must resolve the caller before the handler runs, and the handler
enforces the draft's client_id continuity - the assertion's client_id
claim must name that client. jti is required and consumed under its own
replay purpose. The issued token keeps the plain handler's subject form
and no-upstream-session marker, carries the real redeeming client
instead of a synthetic one, and copies the assertion's act claim
through so the acting agent stays auditable after redemption.

Both handlers are registered from the same per-issuer policy whenever
the grant is enabled; no new configuration surface. The shared
consume/lifetime/issuance plumbing and the factory core are extracted
so the two handlers cannot drift.

Signed-off-by: Aron <aron@muonspace.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

99 of 120 new or added lines in 3 files covered. (82.5%)

21 existing lines in 5 files now uncovered.

81742 of 115606 relevant lines covered (70.71%)

96.95 hits per line

Uncovered Changes

Lines Coverage ∆ File
16
80.25
pkg/authserver/server/tokenexchange/id_jag_handler.go
3
85.45
1.47% pkg/authserver/server/tokenexchange/jwt_bearer_handler.go
2
81.66
-0.26% pkg/authserver/server_impl.go

Coverage Regressions

Lines Coverage ∆ File
6
19.87
-3.97% pkg/client/manager.go
6
59.0
-0.62% pkg/workloads/manager.go
5
61.43
-7.14% pkg/state/runconfig.go
3
82.77
-0.23% pkg/authserver/storage/redis.go
1
85.45
1.47% pkg/authserver/server/tokenexchange/jwt_bearer_handler.go
Jobs
ID Job ID Ran Files Coverage
1 35202690433.1 17 Sep 2026 09:08AM UTC 924
70.71
GitHub Action Run
Source Files on build 35202690433
  • Tree
  • List 924
  • Changed 9
  • Source Changed 2
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35202690433
  • 74c659be on github
  • Prev Build on main (#35144457481)
  • Next Build on main (#35238935410)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc