conformance/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
sagar-okta 83c446ddf5
feat: add conformance tests for SEP-990 (#110)
* feat: add conformance tests for SEP-990

* Resolving review changes: Removed redundant tests, updated audience params

* fix: unused serverUrl parameter in runCrossAppAccessTokenExchange

* chore: apply prettier formatting

* fix: address PR review comments for SEP-990 conformance tests

- Delete unused separate token-exchange and jwt-bearer scenarios,
  keeping only the complete e2e flow (review comment)
- Add missing required token exchange params per SEP-990 spec:
  requested_token_type, audience, resource (review comment)
- Use ctx.idp_client_id for token exchange client_id instead of
  AS client_id (review comment)
- Client discovers resource and auth server via PRM metadata
  instead of receiving auth_server_url via context (review comment)
- Server IdP handler verifies all required token exchange params
  with detailed error messages (review comment)
- Add resource, client_id, jti claims to ID-JAG per SEP-990 spec
- Verify ID-JAG typ header (oauth-id-jag+jwt) in JWT bearer handler
- Remove auth_server_url from context schema

* feat: add client auth and ID-JAG validation to XAA conformance test

Server-side (AS) now verifies:
- client_secret_basic authentication on JWT bearer grant
- ID-JAG typ header is oauth-id-jag+jwt
- ID-JAG client_id claim matches the authenticating client (Section 5.1)
- ID-JAG resource claim matches the MCP server resource identifier
- Client credentials provided via context (client_secret)

Server-side (IdP) now:
- Sets ID-JAG client_id to the MCP Client's AS client_id (not the
  IdP client_id), per Section 6.1

Example client now:
- Authenticates to AS via client_secret_basic (Authorization: Basic)
  instead of sending client_id in body
- Checks AS metadata grant_types_supported includes jwt-bearer
  before attempting the flow

* fix: share MockTokenVerifier and remove unadvertised auth method

- Add shared MockTokenVerifier between AS and MCP server so the MCP
  server only accepts tokens actually issued by the auth server,
  matching the pattern used by all other auth scenarios
- Remove private_key_jwt from tokenEndpointAuthMethodsSupported since
  the handler only implements client_secret_basic

---------

Co-authored-by: Paul Carleton <paulc@anthropic.com>
2026-02-13 17:47:54 +00:00
..
checks feat: support protocol version 2025-11-25 (#81) 2026-01-05 11:54:56 +00:00
runner Add allowClientError to Scenario interface for expected client failures (#123) 2026-01-26 18:31:54 +00:00
scenarios feat: add conformance tests for SEP-990 (#110) 2026-02-13 17:47:54 +00:00
schemas feat: add conformance tests for SEP-990 (#110) 2026-02-13 17:47:54 +00:00
tier-check fix: recurse into subdirectories when parsing conformance output (#148) 2026-02-13 16:13:48 +00:00
expected-failures.test.ts feat: add --expected-failures baseline and composite GitHub Action (#113) 2026-01-22 10:41:04 +00:00
expected-failures.ts feat: add --expected-failures baseline and composite GitHub Action (#113) 2026-01-22 10:41:04 +00:00
index.ts feat: SDK tier assessment CLI and skill (#142) 2026-02-12 17:59:06 +00:00
schemas.ts Add interactive mode with verbose checking (#23) 2025-11-11 17:49:36 +00:00
types.ts Add allowClientError to Scenario interface for expected client failures (#123) 2026-01-26 18:31:54 +00:00