nitrostack 1.0.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/CHANGELOG.md +227 -0
- package/CONTRIBUTING.md +182 -0
- package/LICENSE +201 -0
- package/LICENSE_URLS_UPDATE_COMPLETE.md +388 -0
- package/NOTICE +153 -0
- package/README.md +571 -0
- package/dist/auth/api-key.d.ts +118 -0
- package/dist/auth/api-key.d.ts.map +1 -0
- package/dist/auth/api-key.js +168 -0
- package/dist/auth/api-key.js.map +1 -0
- package/dist/auth/client.d.ts +151 -0
- package/dist/auth/client.d.ts.map +1 -0
- package/dist/auth/client.js +330 -0
- package/dist/auth/client.js.map +1 -0
- package/dist/auth/index.d.ts +30 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +43 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +95 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +260 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/pkce.d.ts +53 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +105 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/quick-setup.d.ts +94 -0
- package/dist/auth/quick-setup.d.ts.map +1 -0
- package/dist/auth/quick-setup.js +210 -0
- package/dist/auth/quick-setup.js.map +1 -0
- package/dist/auth/server-integration.d.ts +97 -0
- package/dist/auth/server-integration.d.ts.map +1 -0
- package/dist/auth/server-integration.js +182 -0
- package/dist/auth/server-integration.js.map +1 -0
- package/dist/auth/server-metadata.d.ts +51 -0
- package/dist/auth/server-metadata.d.ts.map +1 -0
- package/dist/auth/server-metadata.js +106 -0
- package/dist/auth/server-metadata.js.map +1 -0
- package/dist/auth/simple-jwt.d.ts +88 -0
- package/dist/auth/simple-jwt.d.ts.map +1 -0
- package/dist/auth/simple-jwt.js +152 -0
- package/dist/auth/simple-jwt.js.map +1 -0
- package/dist/auth/token-store.d.ts +104 -0
- package/dist/auth/token-store.d.ts.map +1 -0
- package/dist/auth/token-store.js +205 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/auth/token-validation.d.ts +47 -0
- package/dist/auth/token-validation.d.ts.map +1 -0
- package/dist/auth/token-validation.js +237 -0
- package/dist/auth/token-validation.js.map +1 -0
- package/dist/auth/types.d.ts +215 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +6 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli/commands/build.d.ts +6 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +104 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +7 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +312 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/generate-types.d.ts +8 -0
- package/dist/cli/commands/generate-types.d.ts.map +1 -0
- package/dist/cli/commands/generate-types.js +220 -0
- package/dist/cli/commands/generate-types.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +5 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +365 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +7 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +365 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/start.d.ts +6 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +61 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +47 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/mcp-dev-wrapper.d.ts +3 -0
- package/dist/cli/mcp-dev-wrapper.d.ts.map +1 -0
- package/dist/cli/mcp-dev-wrapper.js +116 -0
- package/dist/cli/mcp-dev-wrapper.js.map +1 -0
- package/dist/core/apikey-module.d.ts +69 -0
- package/dist/core/apikey-module.d.ts.map +1 -0
- package/dist/core/apikey-module.js +114 -0
- package/dist/core/apikey-module.js.map +1 -0
- package/dist/core/app-decorator.d.ts +58 -0
- package/dist/core/app-decorator.d.ts.map +1 -0
- package/dist/core/app-decorator.js +261 -0
- package/dist/core/app-decorator.js.map +1 -0
- package/dist/core/builders.d.ts +38 -0
- package/dist/core/builders.d.ts.map +1 -0
- package/dist/core/builders.js +129 -0
- package/dist/core/builders.js.map +1 -0
- package/dist/core/component.d.ts +105 -0
- package/dist/core/component.d.ts.map +1 -0
- package/dist/core/component.js +182 -0
- package/dist/core/component.js.map +1 -0
- package/dist/core/config-module.d.ts +55 -0
- package/dist/core/config-module.d.ts.map +1 -0
- package/dist/core/config-module.js +94 -0
- package/dist/core/config-module.js.map +1 -0
- package/dist/core/decorators/cache.decorator.d.ts +61 -0
- package/dist/core/decorators/cache.decorator.d.ts.map +1 -0
- package/dist/core/decorators/cache.decorator.js +115 -0
- package/dist/core/decorators/cache.decorator.js.map +1 -0
- package/dist/core/decorators/health-check.decorator.d.ts +80 -0
- package/dist/core/decorators/health-check.decorator.d.ts.map +1 -0
- package/dist/core/decorators/health-check.decorator.js +153 -0
- package/dist/core/decorators/health-check.decorator.js.map +1 -0
- package/dist/core/decorators/rate-limit.decorator.d.ts +62 -0
- package/dist/core/decorators/rate-limit.decorator.d.ts.map +1 -0
- package/dist/core/decorators/rate-limit.decorator.js +129 -0
- package/dist/core/decorators/rate-limit.decorator.js.map +1 -0
- package/dist/core/decorators.d.ts +151 -0
- package/dist/core/decorators.d.ts.map +1 -0
- package/dist/core/decorators.js +142 -0
- package/dist/core/decorators.js.map +1 -0
- package/dist/core/di/container.d.ts +42 -0
- package/dist/core/di/container.d.ts.map +1 -0
- package/dist/core/di/container.js +76 -0
- package/dist/core/di/container.js.map +1 -0
- package/dist/core/di/injectable.decorator.d.ts +35 -0
- package/dist/core/di/injectable.decorator.d.ts.map +1 -0
- package/dist/core/di/injectable.decorator.js +57 -0
- package/dist/core/di/injectable.decorator.js.map +1 -0
- package/dist/core/errors.d.ts +54 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +87 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/events/event-emitter.d.ts +50 -0
- package/dist/core/events/event-emitter.d.ts.map +1 -0
- package/dist/core/events/event-emitter.js +94 -0
- package/dist/core/events/event-emitter.js.map +1 -0
- package/dist/core/events/event.decorator.d.ts +48 -0
- package/dist/core/events/event.decorator.d.ts.map +1 -0
- package/dist/core/events/event.decorator.js +68 -0
- package/dist/core/events/event.decorator.js.map +1 -0
- package/dist/core/filters/exception-filter.decorator.d.ts +40 -0
- package/dist/core/filters/exception-filter.decorator.d.ts.map +1 -0
- package/dist/core/filters/exception-filter.decorator.js +54 -0
- package/dist/core/filters/exception-filter.decorator.js.map +1 -0
- package/dist/core/filters/exception-filter.interface.d.ts +30 -0
- package/dist/core/filters/exception-filter.interface.d.ts.map +1 -0
- package/dist/core/filters/exception-filter.interface.js +2 -0
- package/dist/core/filters/exception-filter.interface.js.map +1 -0
- package/dist/core/guards/apikey.guard.d.ts +22 -0
- package/dist/core/guards/apikey.guard.d.ts.map +1 -0
- package/dist/core/guards/apikey.guard.js +11 -0
- package/dist/core/guards/apikey.guard.js.map +1 -0
- package/dist/core/guards/guard.interface.d.ts +18 -0
- package/dist/core/guards/guard.interface.d.ts.map +1 -0
- package/dist/core/guards/guard.interface.js +2 -0
- package/dist/core/guards/guard.interface.js.map +1 -0
- package/dist/core/guards/jwt.guard.d.ts +18 -0
- package/dist/core/guards/jwt.guard.d.ts.map +1 -0
- package/dist/core/guards/jwt.guard.js +2 -0
- package/dist/core/guards/jwt.guard.js.map +1 -0
- package/dist/core/guards/oauth.guard.d.ts +35 -0
- package/dist/core/guards/oauth.guard.d.ts.map +1 -0
- package/dist/core/guards/oauth.guard.js +2 -0
- package/dist/core/guards/oauth.guard.js.map +1 -0
- package/dist/core/guards/use-guards.decorator.d.ts +25 -0
- package/dist/core/guards/use-guards.decorator.d.ts.map +1 -0
- package/dist/core/guards/use-guards.decorator.js +32 -0
- package/dist/core/guards/use-guards.decorator.js.map +1 -0
- package/dist/core/health/health-checks.resource.d.ts +14 -0
- package/dist/core/health/health-checks.resource.d.ts.map +1 -0
- package/dist/core/health/health-checks.resource.js +29 -0
- package/dist/core/health/health-checks.resource.js.map +1 -0
- package/dist/core/index.d.ts +55 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +57 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/interceptors/interceptor.decorator.d.ts +37 -0
- package/dist/core/interceptors/interceptor.decorator.d.ts.map +1 -0
- package/dist/core/interceptors/interceptor.decorator.js +51 -0
- package/dist/core/interceptors/interceptor.decorator.js.map +1 -0
- package/dist/core/interceptors/interceptor.interface.d.ts +31 -0
- package/dist/core/interceptors/interceptor.interface.d.ts.map +1 -0
- package/dist/core/interceptors/interceptor.interface.js +2 -0
- package/dist/core/interceptors/interceptor.interface.js.map +1 -0
- package/dist/core/jwt-module.d.ts +51 -0
- package/dist/core/jwt-module.d.ts.map +1 -0
- package/dist/core/jwt-module.js +52 -0
- package/dist/core/jwt-module.js.map +1 -0
- package/dist/core/logger.d.ts +18 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +51 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/middleware/middleware.decorator.d.ts +39 -0
- package/dist/core/middleware/middleware.decorator.d.ts.map +1 -0
- package/dist/core/middleware/middleware.decorator.js +53 -0
- package/dist/core/middleware/middleware.decorator.js.map +1 -0
- package/dist/core/middleware/middleware.interface.d.ts +29 -0
- package/dist/core/middleware/middleware.interface.d.ts.map +1 -0
- package/dist/core/middleware/middleware.interface.js +2 -0
- package/dist/core/middleware/middleware.interface.js.map +1 -0
- package/dist/core/module.d.ts +74 -0
- package/dist/core/module.d.ts.map +1 -0
- package/dist/core/module.js +82 -0
- package/dist/core/module.js.map +1 -0
- package/dist/core/oauth-module.d.ts +144 -0
- package/dist/core/oauth-module.d.ts.map +1 -0
- package/dist/core/oauth-module.js +190 -0
- package/dist/core/oauth-module.js.map +1 -0
- package/dist/core/pipes/pipe.decorator.d.ts +55 -0
- package/dist/core/pipes/pipe.decorator.d.ts.map +1 -0
- package/dist/core/pipes/pipe.decorator.js +85 -0
- package/dist/core/pipes/pipe.decorator.js.map +1 -0
- package/dist/core/pipes/pipe.interface.d.ts +36 -0
- package/dist/core/pipes/pipe.interface.d.ts.map +1 -0
- package/dist/core/pipes/pipe.interface.js +2 -0
- package/dist/core/pipes/pipe.interface.js.map +1 -0
- package/dist/core/prompt.d.ts +37 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +76 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/resource.d.ts +42 -0
- package/dist/core/resource.d.ts.map +1 -0
- package/dist/core/resource.js +90 -0
- package/dist/core/resource.js.map +1 -0
- package/dist/core/server.d.ts +72 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +406 -0
- package/dist/core/server.js.map +1 -0
- package/dist/core/tool.d.ts +78 -0
- package/dist/core/tool.d.ts.map +1 -0
- package/dist/core/tool.js +190 -0
- package/dist/core/tool.js.map +1 -0
- package/dist/core/transports/http-server.d.ts +102 -0
- package/dist/core/transports/http-server.d.ts.map +1 -0
- package/dist/core/transports/http-server.js +265 -0
- package/dist/core/transports/http-server.js.map +1 -0
- package/dist/core/types.d.ts +123 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/widgets/widget-examples.resource.d.ts +17 -0
- package/dist/core/widgets/widget-examples.resource.d.ts.map +1 -0
- package/dist/core/widgets/widget-examples.resource.js +28 -0
- package/dist/core/widgets/widget-examples.resource.js.map +1 -0
- package/dist/core/widgets/widget-registry.d.ts +56 -0
- package/dist/core/widgets/widget-registry.d.ts.map +1 -0
- package/dist/core/widgets/widget-registry.js +75 -0
- package/dist/core/widgets/widget-registry.js.map +1 -0
- package/dist/testing/index.d.ts +82 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +164 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/ui-next/index.d.ts +31 -0
- package/dist/ui-next/index.d.ts.map +1 -0
- package/dist/ui-next/index.js +687 -0
- package/dist/ui-next/index.js.map +1 -0
- package/dist/widgets/index.d.ts +9 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/dist/widgets/index.js +9 -0
- package/dist/widgets/index.js.map +1 -0
- package/dist/widgets/metadata.d.ts +53 -0
- package/dist/widgets/metadata.d.ts.map +1 -0
- package/dist/widgets/metadata.js +29 -0
- package/dist/widgets/metadata.js.map +1 -0
- package/dist/widgets/withToolData.d.ts +19 -0
- package/dist/widgets/withToolData.d.ts.map +1 -0
- package/dist/widgets/withToolData.js +240 -0
- package/dist/widgets/withToolData.js.map +1 -0
- package/jest.config.js +21 -0
- package/package.json +108 -0
- package/templates/typescript-auth/AI_AGENT_CLI_REFERENCE.md +702 -0
- package/templates/typescript-auth/AI_AGENT_SDK_REFERENCE.md +1260 -0
- package/templates/typescript-auth/README.md +400 -0
- package/templates/typescript-auth/package.json +44 -0
- package/templates/typescript-auth-api-key/AI_AGENT_CLI_REFERENCE.md +701 -0
- package/templates/typescript-auth-api-key/AI_AGENT_SDK_REFERENCE.md +1260 -0
- package/templates/typescript-auth-api-key/README.md +483 -0
- package/templates/typescript-auth-api-key/package-lock.json +124 -0
- package/templates/typescript-auth-api-key/package.json +29 -0
- package/templates/typescript-oauth/AI_AGENT_CLI_REFERENCE.md +701 -0
- package/templates/typescript-oauth/AI_AGENT_SDK_REFERENCE.md +1260 -0
- package/templates/typescript-oauth/OAUTH_SETUP.md +406 -0
- package/templates/typescript-oauth/README.md +350 -0
- package/templates/typescript-oauth/package.json +30 -0
- package/templates/typescript-starter/AI_AGENT_CLI_REFERENCE.md +701 -0
- package/templates/typescript-starter/AI_AGENT_SDK_REFERENCE.md +1260 -0
- package/templates/typescript-starter/README.md +312 -0
- package/templates/typescript-starter/package.json +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../src/auth/token-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { TokenIntrospection, McpAuthConfig } from './types.js';
|
|
2
|
+
interface TokenValidationResult {
|
|
3
|
+
valid: boolean;
|
|
4
|
+
introspection?: TokenIntrospection;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Validate a Bearer token
|
|
9
|
+
*
|
|
10
|
+
* @param token - The access token to validate
|
|
11
|
+
* @param config - Auth configuration
|
|
12
|
+
* @returns Validation result with token introspection data
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateToken(token: string, config: McpAuthConfig): Promise<TokenValidationResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Validate token audience (RFC 8707)
|
|
17
|
+
*
|
|
18
|
+
* CRITICAL: This prevents confused deputy attacks
|
|
19
|
+
* Token MUST be issued specifically for this resource
|
|
20
|
+
*
|
|
21
|
+
* @param introspection - Token introspection result
|
|
22
|
+
* @param expectedAudience - Expected audience value(s)
|
|
23
|
+
* @returns true if audience is valid
|
|
24
|
+
*/
|
|
25
|
+
export declare function validateAudience(introspection: TokenIntrospection, expectedAudience?: string | string[]): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Validate scopes
|
|
28
|
+
*
|
|
29
|
+
* @param introspection - Token introspection result
|
|
30
|
+
* @param requiredScopes - Scopes required for the operation
|
|
31
|
+
* @returns true if token has all required scopes
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateScopes(introspection: TokenIntrospection, requiredScopes: string[]): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Extract Bearer token from Authorization header
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractBearerToken(authHeader: string | undefined): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Check if token is expired
|
|
40
|
+
*/
|
|
41
|
+
export declare function isTokenExpired(introspection: TokenIntrospection): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Clear token cache (useful for testing)
|
|
44
|
+
*/
|
|
45
|
+
export declare function clearTokenCache(): void;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=token-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-validation.d.ts","sourceRoot":"","sources":["../../src/auth/token-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqB/D,UAAU,qBAAqB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,qBAAqB,CAAC,CA0ChC;AAqFD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,kBAAkB,EACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACnC,OAAO,CAgBT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,kBAAkB,EACjC,cAAc,EAAE,MAAM,EAAE,GACvB,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAOhF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAOzE;AA4CD;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Validation Utilities
|
|
3
|
+
*
|
|
4
|
+
* Validates Bearer tokens using either:
|
|
5
|
+
* 1. Token Introspection (RFC 7662)
|
|
6
|
+
* 2. JWT validation with JWKS (RFC 7517, RFC 7519)
|
|
7
|
+
*
|
|
8
|
+
* Note: Uses dynamic import for 'jose' to avoid ES module issues
|
|
9
|
+
*/
|
|
10
|
+
// Lazy-load jose to avoid ES module import issues
|
|
11
|
+
let jose = null;
|
|
12
|
+
async function getJose() {
|
|
13
|
+
if (!jose) {
|
|
14
|
+
jose = await import('jose');
|
|
15
|
+
}
|
|
16
|
+
return jose;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* In-memory cache for token introspection results
|
|
20
|
+
* Reduces load on authorization server
|
|
21
|
+
*/
|
|
22
|
+
const tokenCache = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Validate a Bearer token
|
|
25
|
+
*
|
|
26
|
+
* @param token - The access token to validate
|
|
27
|
+
* @param config - Auth configuration
|
|
28
|
+
* @returns Validation result with token introspection data
|
|
29
|
+
*/
|
|
30
|
+
export async function validateToken(token, config) {
|
|
31
|
+
// Check cache first
|
|
32
|
+
const cached = getFromCache(token);
|
|
33
|
+
if (cached) {
|
|
34
|
+
return { valid: true, introspection: cached };
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
let introspection;
|
|
38
|
+
if (config.tokenIntrospectionEndpoint) {
|
|
39
|
+
// Method 1: Token Introspection (RFC 7662)
|
|
40
|
+
introspection = await introspectToken(token, config);
|
|
41
|
+
}
|
|
42
|
+
else if (config.jwksUri) {
|
|
43
|
+
// Method 2: JWT validation with JWKS
|
|
44
|
+
introspection = await validateJWT(token, config);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return {
|
|
48
|
+
valid: false,
|
|
49
|
+
error: 'No token validation method configured. Set tokenIntrospectionEndpoint or jwksUri.',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (!introspection.active) {
|
|
53
|
+
return { valid: false, error: 'Token is not active' };
|
|
54
|
+
}
|
|
55
|
+
// Validate audience (CRITICAL for security)
|
|
56
|
+
if (!validateAudience(introspection, config.audience)) {
|
|
57
|
+
return {
|
|
58
|
+
valid: false,
|
|
59
|
+
error: 'Token audience mismatch. Token not intended for this resource.',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
// Cache the result
|
|
63
|
+
cacheToken(token, introspection, config.tokenCacheSeconds || 300);
|
|
64
|
+
return { valid: true, introspection };
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return { valid: false, error: error.message };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Introspect token using OAuth 2.0 Token Introspection (RFC 7662)
|
|
72
|
+
*/
|
|
73
|
+
async function introspectToken(token, config) {
|
|
74
|
+
if (!config.tokenIntrospectionEndpoint) {
|
|
75
|
+
throw new Error('Token introspection endpoint not configured');
|
|
76
|
+
}
|
|
77
|
+
// Prepare request with client authentication
|
|
78
|
+
const params = new URLSearchParams();
|
|
79
|
+
params.append('token', token);
|
|
80
|
+
params.append('token_type_hint', 'access_token');
|
|
81
|
+
const headers = {
|
|
82
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
83
|
+
'Accept': 'application/json',
|
|
84
|
+
};
|
|
85
|
+
// Client authentication (if configured)
|
|
86
|
+
if (config.tokenIntrospectionClientId && config.tokenIntrospectionClientSecret) {
|
|
87
|
+
const credentials = Buffer.from(`${config.tokenIntrospectionClientId}:${config.tokenIntrospectionClientSecret}`).toString('base64');
|
|
88
|
+
headers['Authorization'] = `Basic ${credentials}`;
|
|
89
|
+
}
|
|
90
|
+
const response = await fetch(config.tokenIntrospectionEndpoint, {
|
|
91
|
+
method: 'POST',
|
|
92
|
+
headers,
|
|
93
|
+
body: params.toString(),
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new Error(`Token introspection failed: ${response.status} ${response.statusText}`);
|
|
97
|
+
}
|
|
98
|
+
const result = await response.json();
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Validate JWT using JWKS
|
|
103
|
+
*/
|
|
104
|
+
async function validateJWT(token, config) {
|
|
105
|
+
if (!config.jwksUri) {
|
|
106
|
+
throw new Error('JWKS URI not configured');
|
|
107
|
+
}
|
|
108
|
+
// Fetch JWKS
|
|
109
|
+
const joseLib = await getJose();
|
|
110
|
+
const JWKS = joseLib.createRemoteJWKSet(new URL(config.jwksUri));
|
|
111
|
+
// Verify JWT
|
|
112
|
+
const { payload } = await joseLib.jwtVerify(token, JWKS, {
|
|
113
|
+
issuer: config.issuer,
|
|
114
|
+
audience: config.audience,
|
|
115
|
+
});
|
|
116
|
+
// Convert JWT payload to TokenIntrospection format
|
|
117
|
+
const introspection = {
|
|
118
|
+
active: true,
|
|
119
|
+
scope: typeof payload.scope === 'string' ? payload.scope : undefined,
|
|
120
|
+
client_id: typeof payload.client_id === 'string' ? payload.client_id : payload.azp,
|
|
121
|
+
username: typeof payload.username === 'string' ? payload.username : undefined,
|
|
122
|
+
token_type: 'Bearer',
|
|
123
|
+
exp: payload.exp,
|
|
124
|
+
iat: payload.iat,
|
|
125
|
+
nbf: payload.nbf,
|
|
126
|
+
sub: payload.sub,
|
|
127
|
+
aud: Array.isArray(payload.aud) ? payload.aud : payload.aud ? [payload.aud] : undefined,
|
|
128
|
+
iss: payload.iss,
|
|
129
|
+
jti: typeof payload.jti === 'string' ? payload.jti : undefined,
|
|
130
|
+
};
|
|
131
|
+
return introspection;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Validate token audience (RFC 8707)
|
|
135
|
+
*
|
|
136
|
+
* CRITICAL: This prevents confused deputy attacks
|
|
137
|
+
* Token MUST be issued specifically for this resource
|
|
138
|
+
*
|
|
139
|
+
* @param introspection - Token introspection result
|
|
140
|
+
* @param expectedAudience - Expected audience value(s)
|
|
141
|
+
* @returns true if audience is valid
|
|
142
|
+
*/
|
|
143
|
+
export function validateAudience(introspection, expectedAudience) {
|
|
144
|
+
if (!expectedAudience) {
|
|
145
|
+
// If no audience expected, skip validation
|
|
146
|
+
// (Not recommended for production)
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
const expected = Array.isArray(expectedAudience) ? expectedAudience : [expectedAudience];
|
|
150
|
+
const tokenAud = Array.isArray(introspection.aud)
|
|
151
|
+
? introspection.aud
|
|
152
|
+
: introspection.aud
|
|
153
|
+
? [introspection.aud]
|
|
154
|
+
: [];
|
|
155
|
+
// Token audience must include at least one expected audience
|
|
156
|
+
return expected.some((aud) => tokenAud.includes(aud));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Validate scopes
|
|
160
|
+
*
|
|
161
|
+
* @param introspection - Token introspection result
|
|
162
|
+
* @param requiredScopes - Scopes required for the operation
|
|
163
|
+
* @returns true if token has all required scopes
|
|
164
|
+
*/
|
|
165
|
+
export function validateScopes(introspection, requiredScopes) {
|
|
166
|
+
if (!requiredScopes || requiredScopes.length === 0) {
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
if (!introspection.scope) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
const tokenScopes = introspection.scope.split(' ');
|
|
173
|
+
return requiredScopes.every((scope) => tokenScopes.includes(scope));
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Extract Bearer token from Authorization header
|
|
177
|
+
*/
|
|
178
|
+
export function extractBearerToken(authHeader) {
|
|
179
|
+
if (!authHeader) {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
const match = authHeader.match(/^Bearer\s+(.+)$/i);
|
|
183
|
+
return match ? match[1] : null;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Check if token is expired
|
|
187
|
+
*/
|
|
188
|
+
export function isTokenExpired(introspection) {
|
|
189
|
+
if (!introspection.exp) {
|
|
190
|
+
return false; // No expiration set
|
|
191
|
+
}
|
|
192
|
+
const now = Math.floor(Date.now() / 1000);
|
|
193
|
+
return introspection.exp < now;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Cache token introspection result
|
|
197
|
+
*/
|
|
198
|
+
function cacheToken(token, result, seconds) {
|
|
199
|
+
const expiresAt = Date.now() + seconds * 1000;
|
|
200
|
+
tokenCache.set(token, { result, expiresAt });
|
|
201
|
+
// Clean up cache periodically
|
|
202
|
+
if (tokenCache.size > 1000) {
|
|
203
|
+
cleanupCache();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get token from cache if valid
|
|
208
|
+
*/
|
|
209
|
+
function getFromCache(token) {
|
|
210
|
+
const cached = tokenCache.get(token);
|
|
211
|
+
if (!cached) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
if (Date.now() > cached.expiresAt) {
|
|
215
|
+
tokenCache.delete(token);
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
return cached.result;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Remove expired entries from cache
|
|
222
|
+
*/
|
|
223
|
+
function cleanupCache() {
|
|
224
|
+
const now = Date.now();
|
|
225
|
+
for (const [token, cached] of tokenCache.entries()) {
|
|
226
|
+
if (now > cached.expiresAt) {
|
|
227
|
+
tokenCache.delete(token);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Clear token cache (useful for testing)
|
|
233
|
+
*/
|
|
234
|
+
export function clearTokenCache() {
|
|
235
|
+
tokenCache.clear();
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=token-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-validation.js","sourceRoot":"","sources":["../../src/auth/token-validation.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,kDAAkD;AAClD,IAAI,IAAI,GAAiC,IAAI,CAAC;AAC9C,KAAK,UAAU,OAAO;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6D,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,MAAqB;IAErB,oBAAoB;IACpB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,CAAC;QACH,IAAI,aAAiC,CAAC;QAEtC,IAAI,MAAM,CAAC,0BAA0B,EAAE,CAAC;YACtC,2CAA2C;YAC3C,aAAa,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1B,qCAAqC;YACrC,aAAa,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,mFAAmF;aAC3F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QACxD,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,gEAAgE;aACxE,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC,CAAC;QAElE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,KAAa,EACb,MAAqB;IAErB,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAEjD,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,mCAAmC;QACnD,QAAQ,EAAE,kBAAkB;KAC7B,CAAC;IAEF,wCAAwC;IACxC,IAAI,MAAM,CAAC,0BAA0B,IAAI,MAAM,CAAC,8BAA8B,EAAE,CAAC;QAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAC7B,GAAG,MAAM,CAAC,0BAA0B,IAAI,MAAM,CAAC,8BAA8B,EAAE,CAChF,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,WAAW,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,0BAA0B,EAAE;QAC9D,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,MAA4B,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CACxB,KAAa,EACb,MAAqB;IAErB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa;IACb,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjE,aAAa;IACb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;QACvD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,aAAa,GAAuB;QACxC,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACpE,SAAS,EAAE,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAa;QAC5F,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC7E,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAa,CAAC,CAAC,CAAC,CAAC,SAAS;QACjG,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;KAC/D,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAAiC,EACjC,gBAAoC;IAEpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,2CAA2C;QAC3C,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;QAC/C,CAAC,CAAC,aAAa,CAAC,GAAG;QACnB,CAAC,CAAC,aAAa,CAAC,GAAG;YACnB,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;YACrB,CAAC,CAAC,EAAE,CAAC;IAEP,6DAA6D;IAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,aAAiC,EACjC,cAAwB;IAExB,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA8B;IAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,aAAiC;IAC9D,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,CAAC,oBAAoB;IACpC,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,OAAO,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAa,EAAE,MAA0B,EAAE,OAAe;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC;IAC9C,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAE7C,8BAA8B;IAC9B,IAAI,UAAU,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;QAC3B,YAAY,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Types for NitroStack
|
|
3
|
+
* Based on OAuth 2.1 and MCP Authorization Specification
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* OAuth 2.1 Token Response
|
|
7
|
+
*/
|
|
8
|
+
export interface TokenResponse {
|
|
9
|
+
access_token: string;
|
|
10
|
+
token_type: 'Bearer';
|
|
11
|
+
expires_in?: number;
|
|
12
|
+
refresh_token?: string;
|
|
13
|
+
scope?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Token introspection result
|
|
17
|
+
*/
|
|
18
|
+
export interface TokenIntrospection {
|
|
19
|
+
active: boolean;
|
|
20
|
+
scope?: string;
|
|
21
|
+
client_id?: string;
|
|
22
|
+
username?: string;
|
|
23
|
+
token_type?: string;
|
|
24
|
+
exp?: number;
|
|
25
|
+
iat?: number;
|
|
26
|
+
nbf?: number;
|
|
27
|
+
sub?: string;
|
|
28
|
+
aud?: string | string[];
|
|
29
|
+
iss?: string;
|
|
30
|
+
jti?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Protected Resource Metadata (RFC 9728)
|
|
34
|
+
*/
|
|
35
|
+
export interface ProtectedResourceMetadata {
|
|
36
|
+
resource: string;
|
|
37
|
+
authorization_servers: string[];
|
|
38
|
+
scopes_supported?: string[];
|
|
39
|
+
bearer_methods_supported?: ('header' | 'body' | 'query')[];
|
|
40
|
+
resource_signing_alg_values_supported?: string[];
|
|
41
|
+
resource_encryption_alg_values_supported?: string[];
|
|
42
|
+
resource_encryption_enc_values_supported?: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Authorization Server Metadata (RFC 8414)
|
|
46
|
+
*/
|
|
47
|
+
export interface AuthorizationServerMetadata {
|
|
48
|
+
issuer: string;
|
|
49
|
+
authorization_endpoint: string;
|
|
50
|
+
token_endpoint: string;
|
|
51
|
+
jwks_uri?: string;
|
|
52
|
+
registration_endpoint?: string;
|
|
53
|
+
scopes_supported?: string[];
|
|
54
|
+
response_types_supported: string[];
|
|
55
|
+
response_modes_supported?: string[];
|
|
56
|
+
grant_types_supported?: string[];
|
|
57
|
+
token_endpoint_auth_methods_supported?: string[];
|
|
58
|
+
revocation_endpoint?: string;
|
|
59
|
+
revocation_endpoint_auth_methods_supported?: string[];
|
|
60
|
+
introspection_endpoint?: string;
|
|
61
|
+
introspection_endpoint_auth_methods_supported?: string[];
|
|
62
|
+
code_challenge_methods_supported: string[];
|
|
63
|
+
service_documentation?: string;
|
|
64
|
+
ui_locales_supported?: string[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Dynamic Client Registration Request (RFC 7591)
|
|
68
|
+
*/
|
|
69
|
+
export interface ClientRegistrationRequest {
|
|
70
|
+
redirect_uris: string[];
|
|
71
|
+
token_endpoint_auth_method?: string;
|
|
72
|
+
grant_types?: string[];
|
|
73
|
+
response_types?: string[];
|
|
74
|
+
client_name?: string;
|
|
75
|
+
client_uri?: string;
|
|
76
|
+
logo_uri?: string;
|
|
77
|
+
scope?: string;
|
|
78
|
+
contacts?: string[];
|
|
79
|
+
tos_uri?: string;
|
|
80
|
+
policy_uri?: string;
|
|
81
|
+
jwks_uri?: string;
|
|
82
|
+
software_id?: string;
|
|
83
|
+
software_version?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Dynamic Client Registration Response
|
|
87
|
+
*/
|
|
88
|
+
export interface ClientRegistrationResponse {
|
|
89
|
+
client_id: string;
|
|
90
|
+
client_secret?: string;
|
|
91
|
+
client_id_issued_at?: number;
|
|
92
|
+
client_secret_expires_at?: number;
|
|
93
|
+
redirect_uris: string[];
|
|
94
|
+
token_endpoint_auth_method?: string;
|
|
95
|
+
grant_types?: string[];
|
|
96
|
+
response_types?: string[];
|
|
97
|
+
client_name?: string;
|
|
98
|
+
client_uri?: string;
|
|
99
|
+
logo_uri?: string;
|
|
100
|
+
scope?: string;
|
|
101
|
+
contacts?: string[];
|
|
102
|
+
tos_uri?: string;
|
|
103
|
+
policy_uri?: string;
|
|
104
|
+
jwks_uri?: string;
|
|
105
|
+
software_id?: string;
|
|
106
|
+
software_version?: string;
|
|
107
|
+
registration_client_uri?: string;
|
|
108
|
+
registration_access_token?: string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* PKCE (Proof Key for Code Exchange) parameters
|
|
112
|
+
*/
|
|
113
|
+
export interface PKCEParams {
|
|
114
|
+
code_verifier: string;
|
|
115
|
+
code_challenge: string;
|
|
116
|
+
code_challenge_method: 'S256' | 'plain';
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Authorization request parameters
|
|
120
|
+
*/
|
|
121
|
+
export interface AuthorizationRequest {
|
|
122
|
+
response_type: 'code';
|
|
123
|
+
client_id: string;
|
|
124
|
+
redirect_uri: string;
|
|
125
|
+
scope?: string;
|
|
126
|
+
state: string;
|
|
127
|
+
code_challenge: string;
|
|
128
|
+
code_challenge_method: 'S256' | 'plain';
|
|
129
|
+
resource?: string;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Token request parameters
|
|
133
|
+
*/
|
|
134
|
+
export interface TokenRequest {
|
|
135
|
+
grant_type: 'authorization_code' | 'refresh_token' | 'client_credentials';
|
|
136
|
+
code?: string;
|
|
137
|
+
redirect_uri?: string;
|
|
138
|
+
client_id: string;
|
|
139
|
+
client_secret?: string;
|
|
140
|
+
code_verifier?: string;
|
|
141
|
+
refresh_token?: string;
|
|
142
|
+
resource?: string;
|
|
143
|
+
scope?: string;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* OAuth 2.1 Error Response
|
|
147
|
+
*/
|
|
148
|
+
export interface OAuth2Error {
|
|
149
|
+
error: string;
|
|
150
|
+
error_description?: string;
|
|
151
|
+
error_uri?: string;
|
|
152
|
+
state?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* WWW-Authenticate Challenge (RFC 6750)
|
|
156
|
+
*/
|
|
157
|
+
export interface WWWAuthenticateChallenge {
|
|
158
|
+
scheme: 'Bearer';
|
|
159
|
+
realm?: string;
|
|
160
|
+
scope?: string;
|
|
161
|
+
error?: string;
|
|
162
|
+
error_description?: string;
|
|
163
|
+
resource_metadata?: string;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Auth configuration for MCP Server
|
|
167
|
+
*/
|
|
168
|
+
export interface McpAuthConfig {
|
|
169
|
+
resourceUri: string;
|
|
170
|
+
authorizationServers: string[];
|
|
171
|
+
scopesSupported?: string[];
|
|
172
|
+
tokenIntrospectionEndpoint?: string;
|
|
173
|
+
tokenIntrospectionClientId?: string;
|
|
174
|
+
tokenIntrospectionClientSecret?: string;
|
|
175
|
+
jwksUri?: string;
|
|
176
|
+
audience?: string;
|
|
177
|
+
issuer?: string;
|
|
178
|
+
requireHttps?: boolean;
|
|
179
|
+
tokenCacheSeconds?: number;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Auth configuration for MCP Client
|
|
183
|
+
*/
|
|
184
|
+
export interface McpAuthClientConfig {
|
|
185
|
+
clientId?: string;
|
|
186
|
+
clientSecret?: string;
|
|
187
|
+
authorizationServerUrl: string;
|
|
188
|
+
redirectUri?: string;
|
|
189
|
+
scopes?: string[];
|
|
190
|
+
resource?: string;
|
|
191
|
+
autoRegister?: boolean;
|
|
192
|
+
registrationMetadata?: Partial<ClientRegistrationRequest>;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Stored token information
|
|
196
|
+
*/
|
|
197
|
+
export interface StoredToken {
|
|
198
|
+
access_token: string;
|
|
199
|
+
token_type: 'Bearer';
|
|
200
|
+
expires_at: number;
|
|
201
|
+
refresh_token?: string;
|
|
202
|
+
scope?: string;
|
|
203
|
+
resource?: string;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Auth context passed to handlers
|
|
207
|
+
*/
|
|
208
|
+
export interface AuthContext {
|
|
209
|
+
authenticated: boolean;
|
|
210
|
+
tokenInfo?: TokenIntrospection;
|
|
211
|
+
scopes: string[];
|
|
212
|
+
clientId?: string;
|
|
213
|
+
subject?: string;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AASA,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAoBD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBA2FvD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { execSync, exec } from 'child_process';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
/**
|
|
9
|
+
* Check if a port is currently in use
|
|
10
|
+
* Returns true if port is in use, false otherwise
|
|
11
|
+
*/
|
|
12
|
+
async function isPortInUse(port) {
|
|
13
|
+
try {
|
|
14
|
+
const command = process.platform === 'win32'
|
|
15
|
+
? `netstat -ano | findstr :${port}`
|
|
16
|
+
: `lsof -ti:${port} 2>/dev/null || netstat -an 2>/dev/null | grep LISTEN | grep ${port}`;
|
|
17
|
+
const { stdout } = await execAsync(command);
|
|
18
|
+
return stdout.trim().length > 0;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// Command failed means port is not in use
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function buildCommand(options) {
|
|
26
|
+
console.log(chalk.blue.bold('\nš¦ Building NitroStack server for production...\n'));
|
|
27
|
+
// Check if package.json exists
|
|
28
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
29
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
30
|
+
console.error(chalk.red('Error: package.json not found. Are you in a NitroStack project?'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
// Check if tsconfig.json exists
|
|
34
|
+
const tsconfigPath = path.join(process.cwd(), 'tsconfig.json');
|
|
35
|
+
if (!fs.existsSync(tsconfigPath)) {
|
|
36
|
+
console.error(chalk.red('Error: tsconfig.json not found.'));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
// Auto-detect widgets
|
|
40
|
+
const widgetsPath = path.join(process.cwd(), 'src', 'widgets');
|
|
41
|
+
const widgetsPackageJsonPath = path.join(widgetsPath, 'package.json');
|
|
42
|
+
const hasWidgets = fs.existsSync(widgetsPackageJsonPath);
|
|
43
|
+
// Check if dev server is running before building
|
|
44
|
+
console.log(chalk.gray('š Checking for running dev servers...\n'));
|
|
45
|
+
const studioRunning = await isPortInUse(3000);
|
|
46
|
+
const widgetDevRunning = await isPortInUse(3001);
|
|
47
|
+
if (studioRunning || widgetDevRunning) {
|
|
48
|
+
console.log(chalk.red('ā Cannot build while dev server is running!\n'));
|
|
49
|
+
if (studioRunning) {
|
|
50
|
+
console.log(chalk.yellow('ā ļø Studio is running on port 3000'));
|
|
51
|
+
}
|
|
52
|
+
if (widgetDevRunning) {
|
|
53
|
+
console.log(chalk.yellow('ā ļø Widget dev server is running on port 3001'));
|
|
54
|
+
}
|
|
55
|
+
console.log(chalk.red('\nš« Building while dev server is running causes cache corruption and widget errors.'));
|
|
56
|
+
console.log(chalk.cyan('\nš” Solution:'));
|
|
57
|
+
console.log(chalk.white(' 1. Stop the dev server (Press Ctrl+C in the terminal running "nitrostack dev")'));
|
|
58
|
+
console.log(chalk.white(' 2. Run the build command again: npm run build\n'));
|
|
59
|
+
console.log(chalk.gray('Note: You don\'t need to build during development. Just use "nitrostack dev" for testing.\n'));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
console.log(chalk.green('ā
No dev servers running, safe to build\n'));
|
|
63
|
+
try {
|
|
64
|
+
// Build widgets first if they exist
|
|
65
|
+
if (hasWidgets) {
|
|
66
|
+
console.log(chalk.blue('š¦ Detected Next.js widgets, building...\n'));
|
|
67
|
+
// Install dependencies if needed
|
|
68
|
+
const widgetsNodeModulesPath = path.join(widgetsPath, 'node_modules');
|
|
69
|
+
if (!fs.existsSync(widgetsNodeModulesPath)) {
|
|
70
|
+
console.log(chalk.yellow('š„ Installing widget dependencies...\n'));
|
|
71
|
+
execSync('npm install', { cwd: widgetsPath, stdio: 'inherit' });
|
|
72
|
+
}
|
|
73
|
+
const widgetSpinner = ora('Building widgets...').start();
|
|
74
|
+
execSync('npm run build', {
|
|
75
|
+
cwd: widgetsPath,
|
|
76
|
+
stdio: 'pipe',
|
|
77
|
+
env: { ...process.env, NODE_ENV: 'production' },
|
|
78
|
+
});
|
|
79
|
+
widgetSpinner.succeed(chalk.green('Widgets built successfully!'));
|
|
80
|
+
}
|
|
81
|
+
// Build TypeScript
|
|
82
|
+
const spinner = ora('Compiling TypeScript...').start();
|
|
83
|
+
execSync('npx tsc', {
|
|
84
|
+
cwd: process.cwd(),
|
|
85
|
+
stdio: 'pipe',
|
|
86
|
+
});
|
|
87
|
+
spinner.succeed(chalk.green('TypeScript compiled successfully!'));
|
|
88
|
+
console.log(chalk.green.bold('\n⨠Build completed successfully!\n'));
|
|
89
|
+
console.log(chalk.white('Output directory:'), chalk.cyan(options.output));
|
|
90
|
+
if (hasWidgets) {
|
|
91
|
+
console.log(chalk.white('Widgets output:'), chalk.cyan('src/widgets/.next'));
|
|
92
|
+
}
|
|
93
|
+
console.log(chalk.white('\nTo start the server:\n'));
|
|
94
|
+
console.log(chalk.cyan(' npm start'));
|
|
95
|
+
console.log(chalk.white('\nor\n'));
|
|
96
|
+
console.log(chalk.cyan(` nitrostack start\n`));
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.error(chalk.red('\nā Build failed'));
|
|
100
|
+
console.error(chalk.red(error.message));
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=build.js.map
|