Skip to content

Commit bc1f6bc

Browse files
committed
refactor: use canonical SEP-2133 extension identifiers
EXTENSION_IDS now holds the wire identifiers from the spec's extension docs (client-matrix.mdx, docs/extensions/auth/*.mdx) so extensionId values can be cross-referenced against capabilities.extensions keys directly: io.modelcontextprotocol/oauth-client-credentials io.modelcontextprotocol/enterprise-managed-authorization The previous commit used a shortened 'enterprise-managed-auth' which doesn't match the canonical '-authorization'. Re-renames the scenario file/class/slug and downstream references to align.
1 parent 06418af commit bc1f6bc

6 files changed

Lines changed: 34 additions & 21 deletions

File tree

examples/clients/typescript/everything-client.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -375,20 +375,20 @@ registerScenario('auth/pre-registration', runPreRegistration);
375375
// ============================================================================
376376

377377
/**
378-
* Enterprise Managed Auth (SEP-990)
378+
* Enterprise-Managed Authorization (SEP-990)
379379
* Tests the complete flow: IDP ID token -> authorization grant -> access token -> MCP access.
380380
*/
381-
export async function runEnterpriseManagedAuth(
381+
export async function runEnterpriseManagedAuthorization(
382382
serverUrl: string
383383
): Promise<void> {
384384
const ctx = parseContext();
385-
if (ctx.name !== 'auth/enterprise-managed-auth') {
385+
if (ctx.name !== 'auth/enterprise-managed-authorization') {
386386
throw new Error(
387-
`Expected enterprise-managed-auth context, got ${ctx.name}`
387+
`Expected enterprise-managed-authorization context, got ${ctx.name}`
388388
);
389389
}
390390

391-
logger.debug('Starting enterprise managed auth flow...');
391+
logger.debug('Starting enterprise-managed authorization flow...');
392392
logger.debug('IDP Issuer:', ctx.idp_issuer);
393393
logger.debug('IDP Token Endpoint:', ctx.idp_token_endpoint);
394394

@@ -494,7 +494,7 @@ export async function runEnterpriseManagedAuth(
494494
// Step 3: Use access token to access MCP server
495495
logger.debug('Step 3: Accessing MCP server with access token...');
496496
const client = new Client(
497-
{ name: 'conformance-enterprise-managed-auth', version: '1.0.0' },
497+
{ name: 'conformance-enterprise-managed-authorization', version: '1.0.0' },
498498
{ capabilities: {} }
499499
);
500500

@@ -516,10 +516,13 @@ export async function runEnterpriseManagedAuth(
516516
logger.debug('Successfully called tool');
517517

518518
await transport.close();
519-
logger.debug('Enterprise managed auth flow completed successfully');
519+
logger.debug('Enterprise-managed authorization flow completed successfully');
520520
}
521521

522-
registerScenario('auth/enterprise-managed-auth', runEnterpriseManagedAuth);
522+
registerScenario(
523+
'auth/enterprise-managed-authorization',
524+
runEnterpriseManagedAuthorization
525+
);
523526

524527
// ============================================================================
525528
// Main entry point

src/scenarios/client/auth/client-credentials.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ async function generateTestKeypair(): Promise<{
3232
*/
3333
export class ClientCredentialsJwtScenario implements Scenario {
3434
name = 'auth/client-credentials-jwt';
35-
readonly source = { extensionId: 'client-credentials' } as const;
35+
readonly source = {
36+
extensionId: 'io.modelcontextprotocol/oauth-client-credentials'
37+
} as const;
3638
description =
3739
'Tests OAuth client_credentials flow with private_key_jwt authentication (SEP-1046)';
3840

@@ -251,7 +253,9 @@ export class ClientCredentialsJwtScenario implements Scenario {
251253
*/
252254
export class ClientCredentialsBasicScenario implements Scenario {
253255
name = 'auth/client-credentials-basic';
254-
readonly source = { extensionId: 'client-credentials' } as const;
256+
readonly source = {
257+
extensionId: 'io.modelcontextprotocol/oauth-client-credentials'
258+
} as const;
255259
description =
256260
'Tests OAuth client_credentials flow with client_secret_basic authentication';
257261

src/scenarios/client/auth/enterprise-managed-auth.ts renamed to src/scenarios/client/auth/enterprise-managed-authorization.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,18 @@ async function createIdpIdToken(
4848
}
4949

5050
/**
51-
* Scenario: Enterprise Managed Auth (SEP-990)
51+
* Scenario: Enterprise-Managed Authorization (SEP-990)
5252
*
5353
* Tests the complete SEP-990 flow: IDP ID token -> authorization grant -> access token
5454
* This scenario combines both RFC 8693 token exchange and RFC 7523 JWT bearer grant.
5555
*/
56-
export class EnterpriseManagedAuthScenario implements Scenario {
57-
name = 'auth/enterprise-managed-auth';
58-
readonly source = { extensionId: 'enterprise-managed-auth' } as const;
56+
export class EnterpriseManagedAuthorizationScenario implements Scenario {
57+
name = 'auth/enterprise-managed-authorization';
58+
readonly source = {
59+
extensionId: 'io.modelcontextprotocol/enterprise-managed-authorization'
60+
} as const;
5961
description =
60-
'Tests complete SEP-990 flow: token exchange + JWT bearer grant (Enterprise Managed OAuth)';
62+
'Tests complete SEP-990 flow: token exchange + JWT bearer grant (Enterprise-Managed Authorization)';
6163

6264
private idpServer = new ServerLifecycle();
6365
private authServer = new ServerLifecycle();

src/scenarios/client/auth/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
} from './client-credentials';
2424
import { ResourceMismatchScenario } from './resource-mismatch';
2525
import { PreRegistrationScenario } from './pre-registration';
26-
import { EnterpriseManagedAuthScenario } from './enterprise-managed-auth';
26+
import { EnterpriseManagedAuthorizationScenario } from './enterprise-managed-authorization';
2727
import {
2828
OfflineAccessScopeScenario,
2929
OfflineAccessNotSupportedScenario
@@ -54,7 +54,7 @@ export const backcompatScenariosList: Scenario[] = [
5454
export const extensionScenariosList: Scenario[] = [
5555
new ClientCredentialsJwtScenario(),
5656
new ClientCredentialsBasicScenario(),
57-
new EnterpriseManagedAuthScenario()
57+
new EnterpriseManagedAuthorizationScenario()
5858
];
5959

6060
// Draft scenarios (informational - not scored for tier assessment)

src/schemas/context.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const ClientConformanceContextSchema = z.discriminatedUnion('name', [
2424
client_secret: z.string()
2525
}),
2626
z.object({
27-
name: z.literal('auth/enterprise-managed-auth'),
27+
name: z.literal('auth/enterprise-managed-authorization'),
2828
client_id: z.string(),
2929
client_secret: z.string(),
3030
idp_client_id: z.string(),

src/types.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,14 @@ export type SpecVersion = DatedSpecVersion | typeof DRAFT_PROTOCOL_VERSION;
5858
// (selectable via --suite extensions, never via --spec-version). See #256.
5959
export type ScenarioSpecTag = SpecVersion | 'extension';
6060

61-
/** Known protocol extensions that this suite has scenarios for. */
61+
/**
62+
* Known protocol extensions that this suite has scenarios for.
63+
* Values are SEP-2133 extension identifiers (the keys used in
64+
* `capabilities.extensions`).
65+
*/
6266
export const EXTENSION_IDS = [
63-
'client-credentials',
64-
'enterprise-managed-auth'
67+
'io.modelcontextprotocol/oauth-client-credentials',
68+
'io.modelcontextprotocol/enterprise-managed-authorization'
6569
] as const;
6670
export type ExtensionId = (typeof EXTENSION_IDS)[number];
6771

0 commit comments

Comments
 (0)