Skip to content
9 changes: 9 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,10 @@ program
(value) => Number(value),
3000
)
.option(
'--dpop-negative-probes',
'Spend extra authorization codes on DPoP negative probes (invalid proofs and a wrong nonce). Headless authorization servers run these automatically; login-gated servers require this flag or MCP_CONFORMANCE_DPOP_NEGATIVE_PROBES=1'
)
.option('-o, --output-dir <path>', 'Save results to this directory')
.option(
'--spec-version <version>',
Expand Down Expand Up @@ -814,6 +818,11 @@ program
console.error('error: must provide --url or --file');
process.exit(1);
}
// Absent boolean flags must not clobber a settings-file true. Commander
// may surface an omitted flag as false.
if (options.dpopNegativeProbes !== true) {
delete options.dpopNegativeProbes;
}
// CLI flags override file values; undefined CLI values must not clobber file values
const merged = {
...fileOptions,
Expand Down
33 changes: 33 additions & 0 deletions src/scenarios/authorization-server/auth/spec-references.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,38 @@ export const SpecReferences: { [key: string]: SpecReference } = {
OAUTH_2_1_AUTHORIZATION_CODE_GRANT: {
id: 'OAUTH-2.1-authorization-code-grant',
url: 'https://www.ietf.org/archive/id/draft-ietf-oauth-v2-1-13.html#section-4.1'
},
// DPoP (SEP-1932 / RFC 9449) — authorization-server concerns.
SEP_1932_DPOP: {
id: 'SEP-1932-DPoP',
url: 'https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1932'
},
DPOP_EXTENSION: {
id: 'MCP-DPoP-Extension',
url: 'https://github.com/modelcontextprotocol/ext-auth/blob/pieterkas-dpop-extension/specification/draft/dpop-extension.mdx'
},
RFC_9449_AS_METADATA: {
id: 'RFC-9449-authorization-server-metadata',
url: 'https://www.rfc-editor.org/rfc/rfc9449.html#section-5.1'
},
RFC_9449_PROOF_CHECKS: {
id: 'RFC-9449-checking-dpop-proofs',
url: 'https://www.rfc-editor.org/rfc/rfc9449.html#section-4.3'
},
RFC_9449_TOKEN_REQUEST: {
id: 'RFC-9449-dpop-access-token-request',
url: 'https://www.rfc-editor.org/rfc/rfc9449.html#section-5'
},
RFC_9449_AS_NONCE: {
id: 'RFC-9449-authorization-server-provided-nonce',
url: 'https://www.rfc-editor.org/rfc/rfc9449.html#section-8'
},
RFC_9449_PUBLIC_KEY_CONFIRMATION: {
id: 'RFC-9449-public-key-confirmation',
url: 'https://www.rfc-editor.org/rfc/rfc9449.html#section-6'
},
RFC_9449_ALGORITHMS: {
id: 'RFC-9449-dpop-proof-jwt-syntax',
url: 'https://www.rfc-editor.org/rfc/rfc9449.html#section-11.6'
}
};
Loading
Loading