@vurb/jwt 3.2.0 → 3.2.1
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 +79 -79
- package/dist/createJwtAuthTool.d.ts +1 -1
- package/dist/createJwtAuthTool.js +1 -1
- package/dist/createJwtAuthTool.js.map +1 -1
- package/dist/middleware.d.ts +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +1 -1
- package/dist/middleware.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<h1 align="center">@vurb/jwt</h1>
|
|
3
|
-
<p align="center">
|
|
4
|
-
<strong>JWT Verification Middleware</strong> — Standards-compliant token validation for Vurb.ts servers
|
|
5
|
-
</p>
|
|
6
|
-
</p>
|
|
7
|
-
|
|
8
|
-
<p align="center">
|
|
9
|
-
<a href="https://www.npmjs.com/package/@vurb/jwt"><img src="https://img.shields.io/npm/v/@vurb/jwt?color=blue" alt="npm" /></a>
|
|
10
|
-
<a href="https://github.com/vinkius-labs/vurb.ts/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green" alt="License" /></a>
|
|
11
|
-
<img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="Node" />
|
|
12
|
-
</p>
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
> JWT verification middleware for MCP servers built with Vurb.ts. Timing-safe validation with `jose`, JWKS auto-discovery, and self-healing error responses.
|
|
17
|
-
|
|
18
|
-
## Quick Start
|
|
19
|
-
|
|
20
|
-
```typescript
|
|
21
|
-
import { initVurb } from '@vurb/core';
|
|
22
|
-
import { jwtGuard } from '@vurb/jwt';
|
|
23
|
-
|
|
24
|
-
const f = initVurb<AppContext>();
|
|
25
|
-
|
|
26
|
-
const withJwt = jwtGuard({
|
|
27
|
-
secret: process.env.JWT_SECRET!,
|
|
28
|
-
algorithms: ['HS256'],
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
export default f.query('billing.invoices')
|
|
32
|
-
.use(withJwt)
|
|
33
|
-
.handle(async (input, ctx) => {
|
|
34
|
-
// ctx.jwt contains the decoded payload
|
|
35
|
-
return db.invoices.findMany({ where: { tenantId: ctx.jwt.sub } });
|
|
36
|
-
});
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Features
|
|
40
|
-
|
|
41
|
-
| Feature | Description |
|
|
42
|
-
|---------|-------------|
|
|
43
|
-
| **Algorithms** | HS256, RS256, ES256 — all standard algorithms via `jose` |
|
|
44
|
-
| **JWKS** | Auto-discovery from `/.well-known/jwks.json` with key rotation |
|
|
45
|
-
| **Self-Healing** | Expired/invalid tokens return actionable hints to the LLM agent |
|
|
46
|
-
| **Timing-Safe** | Constant-time signature verification |
|
|
47
|
-
| **Zero Config** | Works with Auth0, Clerk, Supabase, Firebase, any OIDC provider |
|
|
48
|
-
|
|
49
|
-
## JWKS Auto-Discovery
|
|
50
|
-
|
|
51
|
-
```typescript
|
|
52
|
-
const withJwt = jwtGuard({
|
|
53
|
-
jwksUri: 'https://auth.example.com/.well-known/jwks.json',
|
|
54
|
-
issuer: 'https://auth.example.com/',
|
|
55
|
-
audience: 'my-mcp-server',
|
|
56
|
-
});
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Installation
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
npm install @vurb/jwt jose
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Peer Dependencies
|
|
66
|
-
|
|
67
|
-
| Package | Version |
|
|
68
|
-
|---------|---------|
|
|
69
|
-
| `vurb` | `^2.0.0` |
|
|
70
|
-
| `jose` | `^5.0.0` (optional) |
|
|
71
|
-
|
|
72
|
-
## Requirements
|
|
73
|
-
|
|
74
|
-
- **Node.js** ≥ 18.0.0
|
|
75
|
-
- **Vurb.ts** ≥ 2.0.0 (peer dependency)
|
|
76
|
-
|
|
77
|
-
## License
|
|
78
|
-
|
|
79
|
-
[Apache-2.0](https://github.com/vinkius-labs/vurb.ts/blob/main/LICENSE)
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">@vurb/jwt</h1>
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>JWT Verification Middleware</strong> — Standards-compliant token validation for Vurb.ts servers
|
|
5
|
+
</p>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://www.npmjs.com/package/@vurb/jwt"><img src="https://img.shields.io/npm/v/@vurb/jwt?color=blue" alt="npm" /></a>
|
|
10
|
+
<a href="https://github.com/vinkius-labs/vurb.ts/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green" alt="License" /></a>
|
|
11
|
+
<img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="Node" />
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
> JWT verification middleware for MCP servers built with Vurb.ts. Timing-safe validation with `jose`, JWKS auto-discovery, and self-healing error responses.
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { initVurb } from '@vurb/core';
|
|
22
|
+
import { jwtGuard } from '@vurb/jwt';
|
|
23
|
+
|
|
24
|
+
const f = initVurb<AppContext>();
|
|
25
|
+
|
|
26
|
+
const withJwt = jwtGuard({
|
|
27
|
+
secret: process.env.JWT_SECRET!,
|
|
28
|
+
algorithms: ['HS256'],
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export default f.query('billing.invoices')
|
|
32
|
+
.use(withJwt)
|
|
33
|
+
.handle(async (input, ctx) => {
|
|
34
|
+
// ctx.jwt contains the decoded payload
|
|
35
|
+
return db.invoices.findMany({ where: { tenantId: ctx.jwt.sub } });
|
|
36
|
+
});
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Features
|
|
40
|
+
|
|
41
|
+
| Feature | Description |
|
|
42
|
+
|---------|-------------|
|
|
43
|
+
| **Algorithms** | HS256, RS256, ES256 — all standard algorithms via `jose` |
|
|
44
|
+
| **JWKS** | Auto-discovery from `/.well-known/jwks.json` with key rotation |
|
|
45
|
+
| **Self-Healing** | Expired/invalid tokens return actionable hints to the LLM agent |
|
|
46
|
+
| **Timing-Safe** | Constant-time signature verification |
|
|
47
|
+
| **Zero Config** | Works with Auth0, Clerk, Supabase, Firebase, any OIDC provider |
|
|
48
|
+
|
|
49
|
+
## JWKS Auto-Discovery
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const withJwt = jwtGuard({
|
|
53
|
+
jwksUri: 'https://auth.example.com/.well-known/jwks.json',
|
|
54
|
+
issuer: 'https://auth.example.com/',
|
|
55
|
+
audience: 'my-mcp-server',
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Installation
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npm install @vurb/jwt jose
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Peer Dependencies
|
|
66
|
+
|
|
67
|
+
| Package | Version |
|
|
68
|
+
|---------|---------|
|
|
69
|
+
| `vurb` | `^2.0.0` |
|
|
70
|
+
| `jose` | `^5.0.0` (optional) |
|
|
71
|
+
|
|
72
|
+
## Requirements
|
|
73
|
+
|
|
74
|
+
- **Node.js** ≥ 18.0.0
|
|
75
|
+
- **Vurb.ts** ≥ 2.0.0 (peer dependency)
|
|
76
|
+
|
|
77
|
+
## License
|
|
78
|
+
|
|
79
|
+
[Apache-2.0](https://github.com/vinkius-labs/vurb.ts/blob/main/LICENSE)
|
|
@@ -35,7 +35,7 @@ export interface JwtAuthToolConfig<TContext = unknown> extends JwtVerifierConfig
|
|
|
35
35
|
* - `verify` — Verify a JWT and return decoded claims
|
|
36
36
|
* - `status` — Check if JWT is present/valid/expired
|
|
37
37
|
*/
|
|
38
|
-
export declare function createJwtAuthTool<TContext = unknown>(config: JwtAuthToolConfig<TContext>): import("vurb").GroupedToolBuilder<TContext, Record<string, never>, string, Record<string, never> & {
|
|
38
|
+
export declare function createJwtAuthTool<TContext = unknown>(config: JwtAuthToolConfig<TContext>): import("@vurb/core").GroupedToolBuilder<TContext, Record<string, never>, string, Record<string, never> & {
|
|
39
39
|
[x: `${string}.verify`]: Record<string, unknown>;
|
|
40
40
|
} & {
|
|
41
41
|
[x: `${string}.status`]: Record<string, unknown>;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* });
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
import { createTool } from 'vurb';
|
|
17
|
+
import { createTool } from '@vurb/core';
|
|
18
18
|
import { JwtVerifier } from './JwtVerifier.js';
|
|
19
19
|
// ============================================================================
|
|
20
20
|
// Response Helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createJwtAuthTool.js","sourceRoot":"","sources":["../src/createJwtAuthTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createJwtAuthTool.js","sourceRoot":"","sources":["../src/createJwtAuthTool.ts"],"names":[],"mappings":"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"}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* .action({ name: 'list', handler: async (ctx) => { ... } });
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
import type { ToolResponse } from 'vurb';
|
|
17
|
+
import type { ToolResponse } from '@vurb/core';
|
|
18
18
|
import type { JwtVerifierConfig, JwtPayload } from './JwtVerifier.js';
|
|
19
19
|
export interface RequireJwtOptions extends JwtVerifierConfig {
|
|
20
20
|
/**
|
package/dist/middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMtE,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IACxD;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAEpE;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAElE,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,6FAA6F;IAC7F,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B,4CAA4C;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACpC;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,IAQnC,KAAK,OAAO,EAAE,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,OAAO,CAAC,YAAY,CAAC,KAAG,OAAO,CAAC,YAAY,CAAC,CA8BxH"}
|
package/dist/middleware.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* .action({ name: 'list', handler: async (ctx) => { ... } });
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
import { toolError } from 'vurb';
|
|
17
|
+
import { toolError } from '@vurb/core';
|
|
18
18
|
import { JwtVerifier } from './JwtVerifier.js';
|
|
19
19
|
// ============================================================================
|
|
20
20
|
// Middleware Factory
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vurb/jwt",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "JWT verification middleware for MCP servers built with vurb. Standards-compliant token validation with jose, JWKS support, and self-healing error responses.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|