@modelcontextprotocol/sdk 1.23.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -1507
- package/dist/cjs/client/auth-extensions.d.ts +178 -0
- package/dist/cjs/client/auth-extensions.d.ts.map +1 -0
- package/dist/cjs/client/auth-extensions.js +300 -0
- package/dist/cjs/client/auth-extensions.js.map +1 -0
- package/dist/cjs/client/auth.d.ts +90 -2
- package/dist/cjs/client/auth.d.ts.map +1 -1
- package/dist/cjs/client/auth.js +131 -75
- package/dist/cjs/client/auth.js.map +1 -1
- package/dist/cjs/client/index.d.ts +122 -14
- package/dist/cjs/client/index.d.ts.map +1 -1
- package/dist/cjs/client/index.js +125 -3
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/client/sse.d.ts.map +1 -1
- package/dist/cjs/client/sse.js +6 -2
- package/dist/cjs/client/sse.js.map +1 -1
- package/dist/cjs/client/stdio.d.ts +0 -1
- package/dist/cjs/client/stdio.d.ts.map +1 -1
- package/dist/cjs/client/stdio.js +36 -11
- package/dist/cjs/client/stdio.js.map +1 -1
- package/dist/cjs/client/streamableHttp.d.ts +1 -0
- package/dist/cjs/client/streamableHttp.d.ts.map +1 -1
- package/dist/cjs/client/streamableHttp.js +36 -15
- package/dist/cjs/client/streamableHttp.js.map +1 -1
- package/dist/cjs/examples/client/simpleClientCredentials.d.ts +20 -0
- package/dist/cjs/examples/client/simpleClientCredentials.d.ts.map +1 -0
- package/dist/cjs/examples/client/simpleClientCredentials.js +70 -0
- package/dist/cjs/examples/client/simpleClientCredentials.js.map +1 -0
- package/dist/cjs/examples/client/simpleOAuthClient.js +77 -1
- package/dist/cjs/examples/client/simpleOAuthClient.js.map +1 -1
- package/dist/cjs/examples/client/simpleStreamableHttp.js +74 -3
- package/dist/cjs/examples/client/simpleStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/client/simpleTaskInteractiveClient.d.ts +10 -0
- package/dist/cjs/examples/client/simpleTaskInteractiveClient.d.ts.map +1 -0
- package/dist/cjs/examples/client/simpleTaskInteractiveClient.js +158 -0
- package/dist/cjs/examples/client/simpleTaskInteractiveClient.js.map +1 -0
- package/dist/cjs/examples/server/elicitationFormExample.js +2 -12
- package/dist/cjs/examples/server/elicitationFormExample.js.map +1 -1
- package/dist/cjs/examples/server/elicitationUrlExample.js +4 -3
- package/dist/cjs/examples/server/elicitationUrlExample.js.map +1 -1
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js +2 -12
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/server/simpleSseServer.js +2 -6
- package/dist/cjs/examples/server/simpleSseServer.js.map +1 -1
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js +2 -12
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/server/simpleStreamableHttp.js +61 -21
- package/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/server/simpleTaskInteractive.d.ts +12 -0
- package/dist/cjs/examples/server/simpleTaskInteractive.d.ts.map +1 -0
- package/dist/cjs/examples/server/simpleTaskInteractive.js +603 -0
- package/dist/cjs/examples/server/simpleTaskInteractive.js.map +1 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +2 -12
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/dist/cjs/examples/server/ssePollingExample.js +11 -25
- package/dist/cjs/examples/server/ssePollingExample.js.map +1 -1
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +2 -6
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/server/toolWithSampleServer.js +7 -5
- package/dist/cjs/examples/server/toolWithSampleServer.js.map +1 -1
- package/dist/cjs/experimental/index.d.ts +13 -0
- package/dist/cjs/experimental/index.d.ts.map +1 -0
- package/dist/cjs/experimental/index.js +29 -0
- package/dist/cjs/experimental/index.js.map +1 -0
- package/dist/cjs/experimental/tasks/client.d.ts +121 -0
- package/dist/cjs/experimental/tasks/client.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/client.js +189 -0
- package/dist/cjs/experimental/tasks/client.js.map +1 -0
- package/dist/cjs/experimental/tasks/helpers.d.ts +47 -0
- package/dist/cjs/experimental/tasks/helpers.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/helpers.js +70 -0
- package/dist/cjs/experimental/tasks/helpers.js.map +1 -0
- package/dist/cjs/experimental/tasks/index.d.ts +16 -0
- package/dist/cjs/experimental/tasks/index.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/index.js +39 -0
- package/dist/cjs/experimental/tasks/index.js.map +1 -0
- package/dist/cjs/experimental/tasks/interfaces.d.ts +232 -0
- package/dist/cjs/experimental/tasks/interfaces.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/interfaces.js +19 -0
- package/dist/cjs/experimental/tasks/interfaces.js.map +1 -0
- package/dist/cjs/experimental/tasks/mcp-server.d.ts +77 -0
- package/dist/cjs/experimental/tasks/mcp-server.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/mcp-server.js +36 -0
- package/dist/cjs/experimental/tasks/mcp-server.js.map +1 -0
- package/dist/cjs/experimental/tasks/server.d.ts +83 -0
- package/dist/cjs/experimental/tasks/server.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/server.js +93 -0
- package/dist/cjs/experimental/tasks/server.js.map +1 -0
- package/dist/cjs/experimental/tasks/stores/in-memory.d.ts +94 -0
- package/dist/cjs/experimental/tasks/stores/in-memory.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/stores/in-memory.js +253 -0
- package/dist/cjs/experimental/tasks/stores/in-memory.js.map +1 -0
- package/dist/cjs/experimental/tasks/types.d.ts +10 -0
- package/dist/cjs/experimental/tasks/types.d.ts.map +1 -0
- package/dist/cjs/experimental/tasks/types.js +28 -0
- package/dist/cjs/experimental/tasks/types.js.map +1 -0
- package/dist/cjs/server/auth/errors.d.ts +7 -0
- package/dist/cjs/server/auth/errors.d.ts.map +1 -1
- package/dist/cjs/server/auth/errors.js +11 -2
- package/dist/cjs/server/auth/errors.js.map +1 -1
- package/dist/cjs/server/auth/handlers/token.d.ts.map +1 -1
- package/dist/cjs/server/auth/handlers/token.js +2 -2
- package/dist/cjs/server/auth/handlers/token.js.map +1 -1
- package/dist/cjs/server/auth/middleware/clientAuth.d.ts.map +1 -1
- package/dist/cjs/server/auth/middleware/clientAuth.js +0 -4
- package/dist/cjs/server/auth/middleware/clientAuth.js.map +1 -1
- package/dist/cjs/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/dist/cjs/server/auth/providers/proxyProvider.js +8 -4
- package/dist/cjs/server/auth/providers/proxyProvider.js.map +1 -1
- package/dist/cjs/server/auth/router.d.ts.map +1 -1
- package/dist/cjs/server/auth/router.js +7 -1
- package/dist/cjs/server/auth/router.js.map +1 -1
- package/dist/cjs/server/index.d.ts +91 -168
- package/dist/cjs/server/index.d.ts.map +1 -1
- package/dist/cjs/server/index.js +162 -0
- package/dist/cjs/server/index.js.map +1 -1
- package/dist/cjs/server/mcp.d.ts +41 -6
- package/dist/cjs/server/mcp.d.ts.map +1 -1
- package/dist/cjs/server/mcp.js +203 -48
- package/dist/cjs/server/mcp.js.map +1 -1
- package/dist/cjs/server/middleware/hostHeaderValidation.d.ts +32 -0
- package/dist/cjs/server/middleware/hostHeaderValidation.d.ts.map +1 -0
- package/dist/cjs/server/middleware/hostHeaderValidation.js +80 -0
- package/dist/cjs/server/middleware/hostHeaderValidation.js.map +1 -0
- package/dist/cjs/server/sse.d.ts +6 -0
- package/dist/cjs/server/sse.d.ts.map +1 -1
- package/dist/cjs/server/sse.js +3 -3
- package/dist/cjs/server/sse.js.map +1 -1
- package/dist/cjs/server/stdio.d.ts +1 -1
- package/dist/cjs/server/stdio.js +1 -1
- package/dist/cjs/server/streamableHttp.d.ts +11 -0
- package/dist/cjs/server/streamableHttp.d.ts.map +1 -1
- package/dist/cjs/server/streamableHttp.js +30 -7
- package/dist/cjs/server/streamableHttp.js.map +1 -1
- package/dist/cjs/server/zod-compat.d.ts +1 -1
- package/dist/cjs/server/zod-compat.d.ts.map +1 -1
- package/dist/cjs/server/zod-compat.js +2 -2
- package/dist/cjs/server/zod-compat.js.map +1 -1
- package/dist/cjs/shared/auth.d.ts +1 -1
- package/dist/cjs/shared/auth.js +1 -1
- package/dist/cjs/shared/auth.js.map +1 -1
- package/dist/cjs/shared/protocol.d.ts +220 -3
- package/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/dist/cjs/shared/protocol.js +699 -38
- package/dist/cjs/shared/protocol.js.map +1 -1
- package/dist/cjs/shared/responseMessage.d.ts +45 -0
- package/dist/cjs/shared/responseMessage.d.ts.map +1 -0
- package/dist/cjs/shared/responseMessage.js +23 -0
- package/dist/cjs/shared/responseMessage.js.map +1 -0
- package/dist/cjs/shared/transport.d.ts +1 -1
- package/dist/cjs/types.d.ts +2369 -73
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +310 -18
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client/auth-extensions.d.ts +178 -0
- package/dist/esm/client/auth-extensions.d.ts.map +1 -0
- package/dist/esm/client/auth-extensions.js +270 -0
- package/dist/esm/client/auth-extensions.js.map +1 -0
- package/dist/esm/client/auth.d.ts +90 -2
- package/dist/esm/client/auth.d.ts.map +1 -1
- package/dist/esm/client/auth.js +129 -75
- package/dist/esm/client/auth.js.map +1 -1
- package/dist/esm/client/index.d.ts +122 -14
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +126 -4
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/sse.d.ts.map +1 -1
- package/dist/esm/client/sse.js +7 -3
- package/dist/esm/client/sse.js.map +1 -1
- package/dist/esm/client/stdio.d.ts +0 -1
- package/dist/esm/client/stdio.d.ts.map +1 -1
- package/dist/esm/client/stdio.js +36 -11
- package/dist/esm/client/stdio.js.map +1 -1
- package/dist/esm/client/streamableHttp.d.ts +1 -0
- package/dist/esm/client/streamableHttp.d.ts.map +1 -1
- package/dist/esm/client/streamableHttp.js +36 -15
- package/dist/esm/client/streamableHttp.js.map +1 -1
- package/dist/esm/examples/client/simpleClientCredentials.d.ts +20 -0
- package/dist/esm/examples/client/simpleClientCredentials.d.ts.map +1 -0
- package/dist/esm/examples/client/simpleClientCredentials.js +68 -0
- package/dist/esm/examples/client/simpleClientCredentials.js.map +1 -0
- package/dist/esm/examples/client/simpleOAuthClient.js +77 -1
- package/dist/esm/examples/client/simpleOAuthClient.js.map +1 -1
- package/dist/esm/examples/client/simpleStreamableHttp.js +75 -4
- package/dist/esm/examples/client/simpleStreamableHttp.js.map +1 -1
- package/dist/esm/examples/client/simpleTaskInteractiveClient.d.ts +10 -0
- package/dist/esm/examples/client/simpleTaskInteractiveClient.d.ts.map +1 -0
- package/dist/esm/examples/client/simpleTaskInteractiveClient.js +156 -0
- package/dist/esm/examples/client/simpleTaskInteractiveClient.js.map +1 -0
- package/dist/esm/examples/server/elicitationFormExample.js +2 -9
- package/dist/esm/examples/server/elicitationFormExample.js.map +1 -1
- package/dist/esm/examples/server/elicitationUrlExample.js +4 -3
- package/dist/esm/examples/server/elicitationUrlExample.js.map +1 -1
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js +2 -9
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/dist/esm/examples/server/simpleSseServer.js +2 -3
- package/dist/esm/examples/server/simpleSseServer.js.map +1 -1
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.js +2 -9
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.js.map +1 -1
- package/dist/esm/examples/server/simpleStreamableHttp.js +62 -19
- package/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -1
- package/dist/esm/examples/server/simpleTaskInteractive.d.ts +12 -0
- package/dist/esm/examples/server/simpleTaskInteractive.d.ts.map +1 -0
- package/dist/esm/examples/server/simpleTaskInteractive.js +601 -0
- package/dist/esm/examples/server/simpleTaskInteractive.js.map +1 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +2 -9
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/dist/esm/examples/server/ssePollingExample.js +11 -25
- package/dist/esm/examples/server/ssePollingExample.js.map +1 -1
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +2 -3
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
- package/dist/esm/examples/server/toolWithSampleServer.js +7 -5
- package/dist/esm/examples/server/toolWithSampleServer.js.map +1 -1
- package/dist/esm/experimental/index.d.ts +13 -0
- package/dist/esm/experimental/index.d.ts.map +1 -0
- package/dist/esm/experimental/index.js +13 -0
- package/dist/esm/experimental/index.js.map +1 -0
- package/dist/esm/experimental/tasks/client.d.ts +121 -0
- package/dist/esm/experimental/tasks/client.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/client.js +185 -0
- package/dist/esm/experimental/tasks/client.js.map +1 -0
- package/dist/esm/experimental/tasks/helpers.d.ts +47 -0
- package/dist/esm/experimental/tasks/helpers.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/helpers.js +66 -0
- package/dist/esm/experimental/tasks/helpers.js.map +1 -0
- package/dist/esm/experimental/tasks/index.d.ts +16 -0
- package/dist/esm/experimental/tasks/index.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/index.js +20 -0
- package/dist/esm/experimental/tasks/index.js.map +1 -0
- package/dist/esm/experimental/tasks/interfaces.d.ts +232 -0
- package/dist/esm/experimental/tasks/interfaces.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/interfaces.js +16 -0
- package/dist/esm/experimental/tasks/interfaces.js.map +1 -0
- package/dist/esm/experimental/tasks/mcp-server.d.ts +77 -0
- package/dist/esm/experimental/tasks/mcp-server.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/mcp-server.js +32 -0
- package/dist/esm/experimental/tasks/mcp-server.js.map +1 -0
- package/dist/esm/experimental/tasks/server.d.ts +83 -0
- package/dist/esm/experimental/tasks/server.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/server.js +89 -0
- package/dist/esm/experimental/tasks/server.js.map +1 -0
- package/dist/esm/experimental/tasks/stores/in-memory.d.ts +94 -0
- package/dist/esm/experimental/tasks/stores/in-memory.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/stores/in-memory.js +248 -0
- package/dist/esm/experimental/tasks/stores/in-memory.js.map +1 -0
- package/dist/esm/experimental/tasks/types.d.ts +10 -0
- package/dist/esm/experimental/tasks/types.d.ts.map +1 -0
- package/dist/esm/experimental/tasks/types.js +10 -0
- package/dist/esm/experimental/tasks/types.js.map +1 -0
- package/dist/esm/server/auth/errors.d.ts +7 -0
- package/dist/esm/server/auth/errors.d.ts.map +1 -1
- package/dist/esm/server/auth/errors.js +9 -1
- package/dist/esm/server/auth/errors.js.map +1 -1
- package/dist/esm/server/auth/handlers/token.d.ts.map +1 -1
- package/dist/esm/server/auth/handlers/token.js +2 -2
- package/dist/esm/server/auth/handlers/token.js.map +1 -1
- package/dist/esm/server/auth/middleware/clientAuth.d.ts.map +1 -1
- package/dist/esm/server/auth/middleware/clientAuth.js +0 -4
- package/dist/esm/server/auth/middleware/clientAuth.js.map +1 -1
- package/dist/esm/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/dist/esm/server/auth/providers/proxyProvider.js +8 -4
- package/dist/esm/server/auth/providers/proxyProvider.js.map +1 -1
- package/dist/esm/server/auth/router.d.ts.map +1 -1
- package/dist/esm/server/auth/router.js +7 -1
- package/dist/esm/server/auth/router.js.map +1 -1
- package/dist/esm/server/index.d.ts +91 -168
- package/dist/esm/server/index.d.ts.map +1 -1
- package/dist/esm/server/index.js +159 -1
- package/dist/esm/server/index.js.map +1 -1
- package/dist/esm/server/mcp.d.ts +41 -6
- package/dist/esm/server/mcp.d.ts.map +1 -1
- package/dist/esm/server/mcp.js +203 -48
- package/dist/esm/server/mcp.js.map +1 -1
- package/dist/esm/server/middleware/hostHeaderValidation.d.ts +32 -0
- package/dist/esm/server/middleware/hostHeaderValidation.d.ts.map +1 -0
- package/dist/esm/server/middleware/hostHeaderValidation.js +76 -0
- package/dist/esm/server/middleware/hostHeaderValidation.js.map +1 -0
- package/dist/esm/server/sse.d.ts +6 -0
- package/dist/esm/server/sse.d.ts.map +1 -1
- package/dist/esm/server/sse.js +2 -2
- package/dist/esm/server/sse.js.map +1 -1
- package/dist/esm/server/stdio.d.ts +1 -1
- package/dist/esm/server/stdio.js +1 -1
- package/dist/esm/server/streamableHttp.d.ts +11 -0
- package/dist/esm/server/streamableHttp.d.ts.map +1 -1
- package/dist/esm/server/streamableHttp.js +30 -7
- package/dist/esm/server/streamableHttp.js.map +1 -1
- package/dist/esm/server/zod-compat.d.ts +1 -1
- package/dist/esm/server/zod-compat.d.ts.map +1 -1
- package/dist/esm/server/zod-compat.js +2 -2
- package/dist/esm/server/zod-compat.js.map +1 -1
- package/dist/esm/shared/auth.d.ts +1 -1
- package/dist/esm/shared/auth.js +1 -1
- package/dist/esm/shared/auth.js.map +1 -1
- package/dist/esm/shared/protocol.d.ts +220 -3
- package/dist/esm/shared/protocol.d.ts.map +1 -1
- package/dist/esm/shared/protocol.js +700 -39
- package/dist/esm/shared/protocol.js.map +1 -1
- package/dist/esm/shared/responseMessage.d.ts +45 -0
- package/dist/esm/shared/responseMessage.d.ts.map +1 -0
- package/dist/esm/shared/responseMessage.js +19 -0
- package/dist/esm/shared/responseMessage.js.map +1 -0
- package/dist/esm/shared/transport.d.ts +1 -1
- package/dist/esm/types.d.ts +2369 -73
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +306 -15
- package/dist/esm/types.js.map +1 -1
- package/package.json +12 -1
- package/dist/cjs/shared/zodTestMatrix.d.ts +0 -16
- package/dist/cjs/shared/zodTestMatrix.d.ts.map +0 -1
- package/dist/cjs/shared/zodTestMatrix.js +0 -43
- package/dist/cjs/shared/zodTestMatrix.js.map +0 -1
- package/dist/esm/shared/zodTestMatrix.d.ts +0 -16
- package/dist/esm/shared/zodTestMatrix.d.ts.map +0 -1
- package/dist/esm/shared/zodTestMatrix.js +0 -17
- package/dist/esm/shared/zodTestMatrix.js.map +0 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth provider extensions for specialized authentication flows.
|
|
3
|
+
*
|
|
4
|
+
* This module provides ready-to-use OAuthClientProvider implementations
|
|
5
|
+
* for common machine-to-machine authentication scenarios.
|
|
6
|
+
*/
|
|
7
|
+
import { OAuthClientInformation, OAuthClientMetadata, OAuthTokens } from '../shared/auth.js';
|
|
8
|
+
import { AddClientAuthentication, OAuthClientProvider } from './auth.js';
|
|
9
|
+
/**
|
|
10
|
+
* Helper to produce a private_key_jwt client authentication function.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* const addClientAuth = createPrivateKeyJwtAuth({ issuer, subject, privateKey, alg, audience? });
|
|
14
|
+
* // pass addClientAuth as provider.addClientAuthentication implementation
|
|
15
|
+
*/
|
|
16
|
+
export declare function createPrivateKeyJwtAuth(options: {
|
|
17
|
+
issuer: string;
|
|
18
|
+
subject: string;
|
|
19
|
+
privateKey: string | Uint8Array | Record<string, unknown>;
|
|
20
|
+
alg: string;
|
|
21
|
+
audience?: string | URL;
|
|
22
|
+
lifetimeSeconds?: number;
|
|
23
|
+
claims?: Record<string, unknown>;
|
|
24
|
+
}): AddClientAuthentication;
|
|
25
|
+
/**
|
|
26
|
+
* Options for creating a ClientCredentialsProvider.
|
|
27
|
+
*/
|
|
28
|
+
export interface ClientCredentialsProviderOptions {
|
|
29
|
+
/**
|
|
30
|
+
* The client_id for this OAuth client.
|
|
31
|
+
*/
|
|
32
|
+
clientId: string;
|
|
33
|
+
/**
|
|
34
|
+
* The client_secret for client_secret_basic authentication.
|
|
35
|
+
*/
|
|
36
|
+
clientSecret: string;
|
|
37
|
+
/**
|
|
38
|
+
* Optional client name for metadata.
|
|
39
|
+
*/
|
|
40
|
+
clientName?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* OAuth provider for client_credentials grant with client_secret_basic authentication.
|
|
44
|
+
*
|
|
45
|
+
* This provider is designed for machine-to-machine authentication where
|
|
46
|
+
* the client authenticates using a client_id and client_secret.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* const provider = new ClientCredentialsProvider({
|
|
50
|
+
* clientId: 'my-client',
|
|
51
|
+
* clientSecret: 'my-secret'
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
55
|
+
* authProvider: provider
|
|
56
|
+
* });
|
|
57
|
+
*/
|
|
58
|
+
export declare class ClientCredentialsProvider implements OAuthClientProvider {
|
|
59
|
+
private _tokens?;
|
|
60
|
+
private _clientInfo;
|
|
61
|
+
private _clientMetadata;
|
|
62
|
+
constructor(options: ClientCredentialsProviderOptions);
|
|
63
|
+
get redirectUrl(): undefined;
|
|
64
|
+
get clientMetadata(): OAuthClientMetadata;
|
|
65
|
+
clientInformation(): OAuthClientInformation;
|
|
66
|
+
saveClientInformation(info: OAuthClientInformation): void;
|
|
67
|
+
tokens(): OAuthTokens | undefined;
|
|
68
|
+
saveTokens(tokens: OAuthTokens): void;
|
|
69
|
+
redirectToAuthorization(): void;
|
|
70
|
+
saveCodeVerifier(): void;
|
|
71
|
+
codeVerifier(): string;
|
|
72
|
+
prepareTokenRequest(scope?: string): URLSearchParams;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Options for creating a PrivateKeyJwtProvider.
|
|
76
|
+
*/
|
|
77
|
+
export interface PrivateKeyJwtProviderOptions {
|
|
78
|
+
/**
|
|
79
|
+
* The client_id for this OAuth client.
|
|
80
|
+
*/
|
|
81
|
+
clientId: string;
|
|
82
|
+
/**
|
|
83
|
+
* The private key for signing JWT assertions.
|
|
84
|
+
* Can be a PEM string, Uint8Array, or JWK object.
|
|
85
|
+
*/
|
|
86
|
+
privateKey: string | Uint8Array | Record<string, unknown>;
|
|
87
|
+
/**
|
|
88
|
+
* The algorithm to use for signing (e.g., 'RS256', 'ES256').
|
|
89
|
+
*/
|
|
90
|
+
algorithm: string;
|
|
91
|
+
/**
|
|
92
|
+
* Optional client name for metadata.
|
|
93
|
+
*/
|
|
94
|
+
clientName?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Optional JWT lifetime in seconds (default: 300).
|
|
97
|
+
*/
|
|
98
|
+
jwtLifetimeSeconds?: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* OAuth provider for client_credentials grant with private_key_jwt authentication.
|
|
102
|
+
*
|
|
103
|
+
* This provider is designed for machine-to-machine authentication where
|
|
104
|
+
* the client authenticates using a signed JWT assertion (RFC 7523 Section 2.2).
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* const provider = new PrivateKeyJwtProvider({
|
|
108
|
+
* clientId: 'my-client',
|
|
109
|
+
* privateKey: pemEncodedPrivateKey,
|
|
110
|
+
* algorithm: 'RS256'
|
|
111
|
+
* });
|
|
112
|
+
*
|
|
113
|
+
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
114
|
+
* authProvider: provider
|
|
115
|
+
* });
|
|
116
|
+
*/
|
|
117
|
+
export declare class PrivateKeyJwtProvider implements OAuthClientProvider {
|
|
118
|
+
private _tokens?;
|
|
119
|
+
private _clientInfo;
|
|
120
|
+
private _clientMetadata;
|
|
121
|
+
addClientAuthentication: AddClientAuthentication;
|
|
122
|
+
constructor(options: PrivateKeyJwtProviderOptions);
|
|
123
|
+
get redirectUrl(): undefined;
|
|
124
|
+
get clientMetadata(): OAuthClientMetadata;
|
|
125
|
+
clientInformation(): OAuthClientInformation;
|
|
126
|
+
saveClientInformation(info: OAuthClientInformation): void;
|
|
127
|
+
tokens(): OAuthTokens | undefined;
|
|
128
|
+
saveTokens(tokens: OAuthTokens): void;
|
|
129
|
+
redirectToAuthorization(): void;
|
|
130
|
+
saveCodeVerifier(): void;
|
|
131
|
+
codeVerifier(): string;
|
|
132
|
+
prepareTokenRequest(scope?: string): URLSearchParams;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Options for creating a StaticPrivateKeyJwtProvider.
|
|
136
|
+
*/
|
|
137
|
+
export interface StaticPrivateKeyJwtProviderOptions {
|
|
138
|
+
/**
|
|
139
|
+
* The client_id for this OAuth client.
|
|
140
|
+
*/
|
|
141
|
+
clientId: string;
|
|
142
|
+
/**
|
|
143
|
+
* A pre-built JWT client assertion to use for authentication.
|
|
144
|
+
*
|
|
145
|
+
* This token should already contain the appropriate claims
|
|
146
|
+
* (iss, sub, aud, exp, etc.) and be signed by the client's key.
|
|
147
|
+
*/
|
|
148
|
+
jwtBearerAssertion: string;
|
|
149
|
+
/**
|
|
150
|
+
* Optional client name for metadata.
|
|
151
|
+
*/
|
|
152
|
+
clientName?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* OAuth provider for client_credentials grant with a static private_key_jwt assertion.
|
|
156
|
+
*
|
|
157
|
+
* This provider mirrors {@link PrivateKeyJwtProvider} but instead of constructing and
|
|
158
|
+
* signing a JWT on each request, it accepts a pre-built JWT assertion string and
|
|
159
|
+
* uses it directly for authentication.
|
|
160
|
+
*/
|
|
161
|
+
export declare class StaticPrivateKeyJwtProvider implements OAuthClientProvider {
|
|
162
|
+
private _tokens?;
|
|
163
|
+
private _clientInfo;
|
|
164
|
+
private _clientMetadata;
|
|
165
|
+
addClientAuthentication: AddClientAuthentication;
|
|
166
|
+
constructor(options: StaticPrivateKeyJwtProviderOptions);
|
|
167
|
+
get redirectUrl(): undefined;
|
|
168
|
+
get clientMetadata(): OAuthClientMetadata;
|
|
169
|
+
clientInformation(): OAuthClientInformation;
|
|
170
|
+
saveClientInformation(info: OAuthClientInformation): void;
|
|
171
|
+
tokens(): OAuthTokens | undefined;
|
|
172
|
+
saveTokens(tokens: OAuthTokens): void;
|
|
173
|
+
redirectToAuthorization(): void;
|
|
174
|
+
saveCodeVerifier(): void;
|
|
175
|
+
codeVerifier(): string;
|
|
176
|
+
prepareTokenRequest(scope?: string): URLSearchParams;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=auth-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-extensions.d.ts","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OAuth provider extensions for specialized authentication flows.
|
|
4
|
+
*
|
|
5
|
+
* This module provides ready-to-use OAuthClientProvider implementations
|
|
6
|
+
* for common machine-to-machine authentication scenarios.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.StaticPrivateKeyJwtProvider = exports.PrivateKeyJwtProvider = exports.ClientCredentialsProvider = void 0;
|
|
33
|
+
exports.createPrivateKeyJwtAuth = createPrivateKeyJwtAuth;
|
|
34
|
+
/**
|
|
35
|
+
* Helper to produce a private_key_jwt client authentication function.
|
|
36
|
+
*
|
|
37
|
+
* Usage:
|
|
38
|
+
* const addClientAuth = createPrivateKeyJwtAuth({ issuer, subject, privateKey, alg, audience? });
|
|
39
|
+
* // pass addClientAuth as provider.addClientAuthentication implementation
|
|
40
|
+
*/
|
|
41
|
+
function createPrivateKeyJwtAuth(options) {
|
|
42
|
+
return async (_headers, params, url, metadata) => {
|
|
43
|
+
var _a, _b, _c;
|
|
44
|
+
// Lazy import to avoid heavy dependency unless used
|
|
45
|
+
if (typeof globalThis.crypto === 'undefined') {
|
|
46
|
+
throw new TypeError('crypto is not available, please ensure you add have Web Crypto API support for older Node.js versions (see https://github.com/modelcontextprotocol/typescript-sdk#nodejs-web-crypto-globalthiscrypto-compatibility)');
|
|
47
|
+
}
|
|
48
|
+
const jose = await Promise.resolve().then(() => __importStar(require('jose')));
|
|
49
|
+
const audience = String((_b = (_a = options.audience) !== null && _a !== void 0 ? _a : metadata === null || metadata === void 0 ? void 0 : metadata.issuer) !== null && _b !== void 0 ? _b : url);
|
|
50
|
+
const lifetimeSeconds = (_c = options.lifetimeSeconds) !== null && _c !== void 0 ? _c : 300;
|
|
51
|
+
const now = Math.floor(Date.now() / 1000);
|
|
52
|
+
const jti = `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
53
|
+
const baseClaims = {
|
|
54
|
+
iss: options.issuer,
|
|
55
|
+
sub: options.subject,
|
|
56
|
+
aud: audience,
|
|
57
|
+
exp: now + lifetimeSeconds,
|
|
58
|
+
iat: now,
|
|
59
|
+
jti
|
|
60
|
+
};
|
|
61
|
+
const claims = options.claims ? { ...baseClaims, ...options.claims } : baseClaims;
|
|
62
|
+
// Import key for the requested algorithm
|
|
63
|
+
const alg = options.alg;
|
|
64
|
+
let key;
|
|
65
|
+
if (typeof options.privateKey === 'string') {
|
|
66
|
+
if (alg.startsWith('RS') || alg.startsWith('ES') || alg.startsWith('PS')) {
|
|
67
|
+
key = await jose.importPKCS8(options.privateKey, alg);
|
|
68
|
+
}
|
|
69
|
+
else if (alg.startsWith('HS')) {
|
|
70
|
+
key = new TextEncoder().encode(options.privateKey);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw new Error(`Unsupported algorithm ${alg}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else if (options.privateKey instanceof Uint8Array) {
|
|
77
|
+
if (alg.startsWith('HS')) {
|
|
78
|
+
key = options.privateKey;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Assume PKCS#8 DER in Uint8Array for asymmetric algorithms
|
|
82
|
+
key = await jose.importPKCS8(new TextDecoder().decode(options.privateKey), alg);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Treat as JWK
|
|
87
|
+
key = await jose.importJWK(options.privateKey, alg);
|
|
88
|
+
}
|
|
89
|
+
// Sign JWT
|
|
90
|
+
const assertion = await new jose.SignJWT(claims)
|
|
91
|
+
.setProtectedHeader({ alg, typ: 'JWT' })
|
|
92
|
+
.setIssuer(options.issuer)
|
|
93
|
+
.setSubject(options.subject)
|
|
94
|
+
.setAudience(audience)
|
|
95
|
+
.setIssuedAt(now)
|
|
96
|
+
.setExpirationTime(now + lifetimeSeconds)
|
|
97
|
+
.setJti(jti)
|
|
98
|
+
.sign(key);
|
|
99
|
+
params.set('client_assertion', assertion);
|
|
100
|
+
params.set('client_assertion_type', 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer');
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* OAuth provider for client_credentials grant with client_secret_basic authentication.
|
|
105
|
+
*
|
|
106
|
+
* This provider is designed for machine-to-machine authentication where
|
|
107
|
+
* the client authenticates using a client_id and client_secret.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* const provider = new ClientCredentialsProvider({
|
|
111
|
+
* clientId: 'my-client',
|
|
112
|
+
* clientSecret: 'my-secret'
|
|
113
|
+
* });
|
|
114
|
+
*
|
|
115
|
+
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
116
|
+
* authProvider: provider
|
|
117
|
+
* });
|
|
118
|
+
*/
|
|
119
|
+
class ClientCredentialsProvider {
|
|
120
|
+
constructor(options) {
|
|
121
|
+
var _a;
|
|
122
|
+
this._clientInfo = {
|
|
123
|
+
client_id: options.clientId,
|
|
124
|
+
client_secret: options.clientSecret
|
|
125
|
+
};
|
|
126
|
+
this._clientMetadata = {
|
|
127
|
+
client_name: (_a = options.clientName) !== null && _a !== void 0 ? _a : 'client-credentials-client',
|
|
128
|
+
redirect_uris: [],
|
|
129
|
+
grant_types: ['client_credentials'],
|
|
130
|
+
token_endpoint_auth_method: 'client_secret_basic'
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
get redirectUrl() {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
get clientMetadata() {
|
|
137
|
+
return this._clientMetadata;
|
|
138
|
+
}
|
|
139
|
+
clientInformation() {
|
|
140
|
+
return this._clientInfo;
|
|
141
|
+
}
|
|
142
|
+
saveClientInformation(info) {
|
|
143
|
+
this._clientInfo = info;
|
|
144
|
+
}
|
|
145
|
+
tokens() {
|
|
146
|
+
return this._tokens;
|
|
147
|
+
}
|
|
148
|
+
saveTokens(tokens) {
|
|
149
|
+
this._tokens = tokens;
|
|
150
|
+
}
|
|
151
|
+
redirectToAuthorization() {
|
|
152
|
+
throw new Error('redirectToAuthorization is not used for client_credentials flow');
|
|
153
|
+
}
|
|
154
|
+
saveCodeVerifier() {
|
|
155
|
+
// Not used for client_credentials
|
|
156
|
+
}
|
|
157
|
+
codeVerifier() {
|
|
158
|
+
throw new Error('codeVerifier is not used for client_credentials flow');
|
|
159
|
+
}
|
|
160
|
+
prepareTokenRequest(scope) {
|
|
161
|
+
const params = new URLSearchParams({ grant_type: 'client_credentials' });
|
|
162
|
+
if (scope)
|
|
163
|
+
params.set('scope', scope);
|
|
164
|
+
return params;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.ClientCredentialsProvider = ClientCredentialsProvider;
|
|
168
|
+
/**
|
|
169
|
+
* OAuth provider for client_credentials grant with private_key_jwt authentication.
|
|
170
|
+
*
|
|
171
|
+
* This provider is designed for machine-to-machine authentication where
|
|
172
|
+
* the client authenticates using a signed JWT assertion (RFC 7523 Section 2.2).
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* const provider = new PrivateKeyJwtProvider({
|
|
176
|
+
* clientId: 'my-client',
|
|
177
|
+
* privateKey: pemEncodedPrivateKey,
|
|
178
|
+
* algorithm: 'RS256'
|
|
179
|
+
* });
|
|
180
|
+
*
|
|
181
|
+
* const transport = new StreamableHTTPClientTransport(serverUrl, {
|
|
182
|
+
* authProvider: provider
|
|
183
|
+
* });
|
|
184
|
+
*/
|
|
185
|
+
class PrivateKeyJwtProvider {
|
|
186
|
+
constructor(options) {
|
|
187
|
+
var _a;
|
|
188
|
+
this._clientInfo = {
|
|
189
|
+
client_id: options.clientId
|
|
190
|
+
};
|
|
191
|
+
this._clientMetadata = {
|
|
192
|
+
client_name: (_a = options.clientName) !== null && _a !== void 0 ? _a : 'private-key-jwt-client',
|
|
193
|
+
redirect_uris: [],
|
|
194
|
+
grant_types: ['client_credentials'],
|
|
195
|
+
token_endpoint_auth_method: 'private_key_jwt'
|
|
196
|
+
};
|
|
197
|
+
this.addClientAuthentication = createPrivateKeyJwtAuth({
|
|
198
|
+
issuer: options.clientId,
|
|
199
|
+
subject: options.clientId,
|
|
200
|
+
privateKey: options.privateKey,
|
|
201
|
+
alg: options.algorithm,
|
|
202
|
+
lifetimeSeconds: options.jwtLifetimeSeconds
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
get redirectUrl() {
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
get clientMetadata() {
|
|
209
|
+
return this._clientMetadata;
|
|
210
|
+
}
|
|
211
|
+
clientInformation() {
|
|
212
|
+
return this._clientInfo;
|
|
213
|
+
}
|
|
214
|
+
saveClientInformation(info) {
|
|
215
|
+
this._clientInfo = info;
|
|
216
|
+
}
|
|
217
|
+
tokens() {
|
|
218
|
+
return this._tokens;
|
|
219
|
+
}
|
|
220
|
+
saveTokens(tokens) {
|
|
221
|
+
this._tokens = tokens;
|
|
222
|
+
}
|
|
223
|
+
redirectToAuthorization() {
|
|
224
|
+
throw new Error('redirectToAuthorization is not used for client_credentials flow');
|
|
225
|
+
}
|
|
226
|
+
saveCodeVerifier() {
|
|
227
|
+
// Not used for client_credentials
|
|
228
|
+
}
|
|
229
|
+
codeVerifier() {
|
|
230
|
+
throw new Error('codeVerifier is not used for client_credentials flow');
|
|
231
|
+
}
|
|
232
|
+
prepareTokenRequest(scope) {
|
|
233
|
+
const params = new URLSearchParams({ grant_type: 'client_credentials' });
|
|
234
|
+
if (scope)
|
|
235
|
+
params.set('scope', scope);
|
|
236
|
+
return params;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.PrivateKeyJwtProvider = PrivateKeyJwtProvider;
|
|
240
|
+
/**
|
|
241
|
+
* OAuth provider for client_credentials grant with a static private_key_jwt assertion.
|
|
242
|
+
*
|
|
243
|
+
* This provider mirrors {@link PrivateKeyJwtProvider} but instead of constructing and
|
|
244
|
+
* signing a JWT on each request, it accepts a pre-built JWT assertion string and
|
|
245
|
+
* uses it directly for authentication.
|
|
246
|
+
*/
|
|
247
|
+
class StaticPrivateKeyJwtProvider {
|
|
248
|
+
constructor(options) {
|
|
249
|
+
var _a;
|
|
250
|
+
this._clientInfo = {
|
|
251
|
+
client_id: options.clientId
|
|
252
|
+
};
|
|
253
|
+
this._clientMetadata = {
|
|
254
|
+
client_name: (_a = options.clientName) !== null && _a !== void 0 ? _a : 'static-private-key-jwt-client',
|
|
255
|
+
redirect_uris: [],
|
|
256
|
+
grant_types: ['client_credentials'],
|
|
257
|
+
token_endpoint_auth_method: 'private_key_jwt'
|
|
258
|
+
};
|
|
259
|
+
const assertion = options.jwtBearerAssertion;
|
|
260
|
+
this.addClientAuthentication = async (_headers, params) => {
|
|
261
|
+
params.set('client_assertion', assertion);
|
|
262
|
+
params.set('client_assertion_type', 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer');
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
get redirectUrl() {
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
get clientMetadata() {
|
|
269
|
+
return this._clientMetadata;
|
|
270
|
+
}
|
|
271
|
+
clientInformation() {
|
|
272
|
+
return this._clientInfo;
|
|
273
|
+
}
|
|
274
|
+
saveClientInformation(info) {
|
|
275
|
+
this._clientInfo = info;
|
|
276
|
+
}
|
|
277
|
+
tokens() {
|
|
278
|
+
return this._tokens;
|
|
279
|
+
}
|
|
280
|
+
saveTokens(tokens) {
|
|
281
|
+
this._tokens = tokens;
|
|
282
|
+
}
|
|
283
|
+
redirectToAuthorization() {
|
|
284
|
+
throw new Error('redirectToAuthorization is not used for client_credentials flow');
|
|
285
|
+
}
|
|
286
|
+
saveCodeVerifier() {
|
|
287
|
+
// Not used for client_credentials
|
|
288
|
+
}
|
|
289
|
+
codeVerifier() {
|
|
290
|
+
throw new Error('codeVerifier is not used for client_credentials flow');
|
|
291
|
+
}
|
|
292
|
+
prepareTokenRequest(scope) {
|
|
293
|
+
const params = new URLSearchParams({ grant_type: 'client_credentials' });
|
|
294
|
+
if (scope)
|
|
295
|
+
params.set('scope', scope);
|
|
296
|
+
return params;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
exports.StaticPrivateKeyJwtProvider = StaticPrivateKeyJwtProvider;
|
|
300
|
+
//# sourceMappingURL=auth-extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-extensions.js","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { OAuthClientMetadata, OAuthClientInformationMixed, OAuthTokens, OAuthMetadata, OAuthClientInformationFull, OAuthProtectedResourceMetadata, AuthorizationServerMetadata } from '../shared/auth.js';
|
|
2
2
|
import { OAuthError } from '../server/auth/errors.js';
|
|
3
3
|
import { FetchLike } from '../shared/transport.js';
|
|
4
|
+
/**
|
|
5
|
+
* Function type for adding client authentication to token requests.
|
|
6
|
+
*/
|
|
7
|
+
export type AddClientAuthentication = (headers: Headers, params: URLSearchParams, url: string | URL, metadata?: AuthorizationServerMetadata) => void | Promise<void>;
|
|
4
8
|
/**
|
|
5
9
|
* Implements an end-to-end OAuth client to be used with one MCP server.
|
|
6
10
|
*
|
|
@@ -11,8 +15,10 @@ import { FetchLike } from '../shared/transport.js';
|
|
|
11
15
|
export interface OAuthClientProvider {
|
|
12
16
|
/**
|
|
13
17
|
* The URL to redirect the user agent to after authorization.
|
|
18
|
+
* Return undefined for non-interactive flows that don't require user interaction
|
|
19
|
+
* (e.g., client_credentials, jwt-bearer).
|
|
14
20
|
*/
|
|
15
|
-
get redirectUrl(): string | URL;
|
|
21
|
+
get redirectUrl(): string | URL | undefined;
|
|
16
22
|
/**
|
|
17
23
|
* External URL the server should use to fetch client metadata document
|
|
18
24
|
*/
|
|
@@ -82,7 +88,7 @@ export interface OAuthClientProvider {
|
|
|
82
88
|
* @param url - The token endpoint URL being called
|
|
83
89
|
* @param metadata - Optional OAuth metadata for the server, which may include supported authentication methods
|
|
84
90
|
*/
|
|
85
|
-
addClientAuthentication
|
|
91
|
+
addClientAuthentication?: AddClientAuthentication;
|
|
86
92
|
/**
|
|
87
93
|
* If defined, overrides the selection and validation of the
|
|
88
94
|
* RFC 8707 Resource Indicator. If left undefined, default
|
|
@@ -97,6 +103,43 @@ export interface OAuthClientProvider {
|
|
|
97
103
|
* This avoids requiring the user to intervene manually.
|
|
98
104
|
*/
|
|
99
105
|
invalidateCredentials?(scope: 'all' | 'client' | 'tokens' | 'verifier'): void | Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Prepares grant-specific parameters for a token request.
|
|
108
|
+
*
|
|
109
|
+
* This optional method allows providers to customize the token request based on
|
|
110
|
+
* the grant type they support. When implemented, it returns the grant type and
|
|
111
|
+
* any grant-specific parameters needed for the token exchange.
|
|
112
|
+
*
|
|
113
|
+
* If not implemented, the default behavior depends on the flow:
|
|
114
|
+
* - For authorization code flow: uses code, code_verifier, and redirect_uri
|
|
115
|
+
* - For client_credentials: detected via grant_types in clientMetadata
|
|
116
|
+
*
|
|
117
|
+
* @param scope - Optional scope to request
|
|
118
|
+
* @returns Grant type and parameters, or undefined to use default behavior
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* // For client_credentials grant:
|
|
122
|
+
* prepareTokenRequest(scope) {
|
|
123
|
+
* return {
|
|
124
|
+
* grantType: 'client_credentials',
|
|
125
|
+
* params: scope ? { scope } : {}
|
|
126
|
+
* };
|
|
127
|
+
* }
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* // For authorization_code grant (default behavior):
|
|
131
|
+
* async prepareTokenRequest() {
|
|
132
|
+
* return {
|
|
133
|
+
* grantType: 'authorization_code',
|
|
134
|
+
* params: {
|
|
135
|
+
* code: this.authorizationCode,
|
|
136
|
+
* code_verifier: await this.codeVerifier(),
|
|
137
|
+
* redirect_uri: String(this.redirectUrl)
|
|
138
|
+
* }
|
|
139
|
+
* };
|
|
140
|
+
* }
|
|
141
|
+
*/
|
|
142
|
+
prepareTokenRequest?(scope?: string): URLSearchParams | Promise<URLSearchParams | undefined> | undefined;
|
|
100
143
|
}
|
|
101
144
|
export type AuthResult = 'AUTHORIZED' | 'REDIRECT';
|
|
102
145
|
export declare class UnauthorizedError extends Error {
|
|
@@ -226,6 +269,18 @@ export declare function startAuthorization(authorizationServerUrl: string | URL,
|
|
|
226
269
|
authorizationUrl: URL;
|
|
227
270
|
codeVerifier: string;
|
|
228
271
|
}>;
|
|
272
|
+
/**
|
|
273
|
+
* Prepares token request parameters for an authorization code exchange.
|
|
274
|
+
*
|
|
275
|
+
* This is the default implementation used by fetchToken when the provider
|
|
276
|
+
* doesn't implement prepareTokenRequest.
|
|
277
|
+
*
|
|
278
|
+
* @param authorizationCode - The authorization code received from the authorization endpoint
|
|
279
|
+
* @param codeVerifier - The PKCE code verifier
|
|
280
|
+
* @param redirectUri - The redirect URI used in the authorization request
|
|
281
|
+
* @returns URLSearchParams for the authorization_code grant
|
|
282
|
+
*/
|
|
283
|
+
export declare function prepareAuthorizationCodeRequest(authorizationCode: string, codeVerifier: string, redirectUri: string | URL): URLSearchParams;
|
|
229
284
|
/**
|
|
230
285
|
* Exchanges an authorization code for an access token with the given server.
|
|
231
286
|
*
|
|
@@ -268,6 +323,39 @@ export declare function refreshAuthorization(authorizationServerUrl: string | UR
|
|
|
268
323
|
addClientAuthentication?: OAuthClientProvider['addClientAuthentication'];
|
|
269
324
|
fetchFn?: FetchLike;
|
|
270
325
|
}): Promise<OAuthTokens>;
|
|
326
|
+
/**
|
|
327
|
+
* Unified token fetching that works with any grant type via provider.prepareTokenRequest().
|
|
328
|
+
*
|
|
329
|
+
* This function provides a single entry point for obtaining tokens regardless of the
|
|
330
|
+
* OAuth grant type. The provider's prepareTokenRequest() method determines which grant
|
|
331
|
+
* to use and supplies the grant-specific parameters.
|
|
332
|
+
*
|
|
333
|
+
* @param provider - OAuth client provider that implements prepareTokenRequest()
|
|
334
|
+
* @param authorizationServerUrl - The authorization server's base URL
|
|
335
|
+
* @param options - Configuration for the token request
|
|
336
|
+
* @returns Promise resolving to OAuth tokens
|
|
337
|
+
* @throws {Error} When provider doesn't implement prepareTokenRequest or token fetch fails
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* // Provider for client_credentials:
|
|
341
|
+
* class MyProvider implements OAuthClientProvider {
|
|
342
|
+
* prepareTokenRequest(scope) {
|
|
343
|
+
* const params = new URLSearchParams({ grant_type: 'client_credentials' });
|
|
344
|
+
* if (scope) params.set('scope', scope);
|
|
345
|
+
* return params;
|
|
346
|
+
* }
|
|
347
|
+
* // ... other methods
|
|
348
|
+
* }
|
|
349
|
+
*
|
|
350
|
+
* const tokens = await fetchToken(provider, authServerUrl, { metadata });
|
|
351
|
+
*/
|
|
352
|
+
export declare function fetchToken(provider: OAuthClientProvider, authorizationServerUrl: string | URL, { metadata, resource, authorizationCode, fetchFn }?: {
|
|
353
|
+
metadata?: AuthorizationServerMetadata;
|
|
354
|
+
resource?: URL;
|
|
355
|
+
/** Authorization code for the default authorization_code grant flow */
|
|
356
|
+
authorizationCode?: string;
|
|
357
|
+
fetchFn?: FetchLike;
|
|
358
|
+
}): Promise<OAuthTokens>;
|
|
271
359
|
/**
|
|
272
360
|
* Performs OAuth 2.0 Dynamic Client Registration according to RFC 7591.
|
|
273
361
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,mBAAmB,EAEnB,2BAA2B,EAC3B,WAAW,EACX,aAAa,EACb,0BAA0B,EAC1B,8BAA8B,EAE9B,2BAA2B,EAE9B,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAKH,UAAU,EAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAChC
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"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"}
|