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

stacklok / toolhive / 30251979566
70%

Build:
DEFAULT BRANCH: main
Ran 27 Jul 2026 09:28AM UTC
Jobs 1
Files 840
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

27 Jul 2026 08:58AM UTC coverage: 69.482% (+0.003%) from 69.479%
30251979566

push

github

web-flow
Validate subject tokens from external OIDC issuers (#5995)

* Extract SubjectTokenValidator interface for multi-issuer support

Introduce a SubjectTokenValidator interface with a single Validate method,
preparing for multi-issuer token validation where external OIDC tokens
(e.g., Keycloak) need different JWKS resolution than self-issued tokens.

Rename the existing concrete struct to SelfIssuedTokenValidator to clarify
its role. The handler now depends on the interface, not the concrete type,
following Go's "accept interfaces, return structs" pattern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add multi-issuer token validator for external OIDC token exchange

Implement MultiIssuerTokenValidator that routes JWT validation based on
the token's issuer claim. Self-issued tokens delegate to the existing
SelfIssuedTokenValidator. External tokens (e.g., Keycloak) are validated
against the issuer's JWKS, fetched via OIDC discovery with caching.

Security: JWKS URLs from OIDC discovery are validated to require HTTPS
and reject private/loopback addresses (SSRF prevention). Discovered URLs
are re-resolved when the JWKS cache expires.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fail loudly on empty ExpectedAudience, fix subject-token error code

Address panel review feedback on the multi-issuer validator:
NewMultiIssuerTokenValidator silently accepted a TrustedIssuer with no
ExpectedAudience instead of rejecting it, and subject-token validation
failures returned invalid_grant instead of invalid_request. Also drain
response bodies before closing on non-200 discovery/JWKS fetches.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Harden multi-issuer validator, fix review findings

Address code-review findings on the multi-issuer subject-token
validator. Fix the self-issued routing test, which handed the private
JWKS to the validator instead of the public set. Require an "exp" claim
on external tok... (continued)

152 of 219 new or added lines in 4 files covered. (69.41%)

6 existing lines in 3 files now uncovered.

80028 of 115178 relevant lines covered (69.48%)

82.42 hits per line

Uncovered Changes

Lines Coverage ∆ File
67
67.79
pkg/authserver/server/tokenexchange/multi_issuer_validator.go

Coverage Regressions

Lines Coverage ∆ File
3
71.85
-1.11% pkg/ignore/processor.go
2
82.29
-0.21% pkg/vmcp/composer/workflow_engine.go
1
62.38
0.6% pkg/workloads/manager.go
Jobs
ID Job ID Ran Files Coverage
1 30251979566.1 27 Jul 2026 09:28AM UTC 840
69.48
GitHub Action Run
Source Files on build 30251979566
  • Tree
  • List 840
  • Changed 7
  • Source Changed 3
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30251979566
  • ff0ba2e9 on github
  • Prev Build on main (#30250838615)
  • Next Build on main (#30256591239)
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