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

pomerium / pomerium / 33511398333
53%

Build:
DEFAULT BRANCH: main
Ran 01 Sep 2026 01:24PM UTC
Jobs 1
Files 713
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

01 Sep 2026 01:06PM UTC coverage: 52.572% (-0.02%) from 52.594%
33511398333

push

github

web-flow
fix(mcp/CIMD): negotiate supported token auth endpoint methods based on Oauth2 server metadata (#6700)

## Summary

Our CIMD flow fetches client side metadata and was using the default
advertised `token_endpoint_auth_method` metadata.

As per RFC 8414, Oauth 2 may also include an optional list of
`token_endpoint_auth_methods_supported`, which include a list of
supported methods.

ChatGPT exposes `private_key_jwt` as the default token endpoint auth
method, which Pomerium currently does not support. It also allows for
the `none` method which Pomerium does support (It's actually the only
method we currently support for this downstream CIMD flow).

This PR adds a negotiation layer for supported auth methods, to future
proof this downstream client flow, and returns a bad request error with
relevant information about the mismatch between auth methods, so that
the failure is clear.

I plan to look into the `private_key_jwt` mechanism in more detail and
see if we can implement it in Pomerium.

## Related issues

Addresses: https://github.com/pomerium/pomerium/issues/6692

## User Explanation

MCP Clients could break if they advertised default token auth methods
like `private_key_jwt` that Pomerium doesn't support in its flow.

## AI disclosure

I used claude Opus 5 to draft the log messages to fit the existing log
messages in `internal/mcp`. The fix, approach to the problem and code is
my own.

## Checklist

- [X] reference any related issues
- [X] updated unit tests
- [X] add appropriate label (`enhancement`, `bug`, `breaking`,
`dependencies`, `ci`)
- [X] disclosed AI usage (or wrote "none") per AI_POLICY.md
- [X] ready for review

37 of 40 new or added lines in 1 file covered. (92.5%)

49 existing lines in 11 files now uncovered.

33489 of 63701 relevant lines covered (52.57%)

352.08 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
55.97
5.26% internal/mcp/handler_authorization.go

Coverage Regressions

Lines Coverage ∆ File
10
74.14
-2.3% pkg/storage/postgres/backend.go
9
86.49
0.0% pkg/ssh/manager.go
6
46.26
-0.91% internal/databroker/server_clustered_follower.go
6
72.8
-4.8% pkg/grpcutil/client_manager.go
5
92.27
-2.76% config/config_source.go
4
72.7
-0.95% internal/databroker/config_source.go
4
87.23
-0.95% pkg/storage/postgres/postgres.go
2
91.3
-4.35% pkg/fanout/receive.go
1
55.97
5.26% internal/mcp/handler_authorization.go
1
92.86
-3.57% pkg/fanout/fanout.go
1
96.05
-1.32% pkg/identity/manager/schedulers.go
Jobs
ID Job ID Ran Files Coverage
1 33511398333.1 01 Sep 2026 01:24PM UTC 713
52.57
GitHub Action Run
Source Files on build 33511398333
  • Tree
  • List 713
  • Changed 15
  • Source Changed 2
  • Coverage Changed 15
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33511398333
  • c9f7f165 on github
  • Prev Build on main (#33462916055)
  • Next Build on main (#33572204180)
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