bezzie 0.2.1 → 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/dist/routes.js CHANGED
@@ -5,13 +5,28 @@ import { getAuthorizationServer } from './discovery';
5
5
  export function authRoutes(config, cache) {
6
6
  const router = new Hono();
7
7
  const sessionStore = config.adapter;
8
- router.get('/login', async (c) => {
8
+ router.get(config.routes?.login ?? '/login', async (c) => {
9
9
  const code_verifier = oauth.generateRandomCodeVerifier();
10
10
  const code_challenge = await oauth.calculatePKCECodeChallenge(code_verifier);
11
+ // oauth.generateRandomState() uses crypto.getRandomValues — cryptographically random,
12
+ // not sequential or time-based. Safe to use as an anti-CSRF state value.
11
13
  const state = oauth.generateRandomState();
14
+ const csrfToken = oauth.generateRandomState();
15
+ // S8: OIDC nonce — bound to this login flow, verified in /callback against
16
+ // the `nonce` claim of the returned ID token to prevent replay.
17
+ const nonce = oauth.generateRandomState();
12
18
  const returnTo = c.req.query('returnTo');
13
- // Store state and codeVerifier in adapter
14
- await config.adapter.set(`pkce:${state}`, { _type: 'pkce', codeVerifier: code_verifier, returnTo }, config.pkceStateTtlSeconds ?? 600); // 10 minutes
19
+ // Store state, codeVerifier, csrfToken, and nonce in adapter
20
+ await config.adapter.set(`pkce:${state}`, { _type: 'pkce', codeVerifier: code_verifier, returnTo, csrfToken, nonce }, config.pkceStateTtlSeconds ?? 600); // 10 minutes
21
+ // Bind the PKCE state to the user's browser session via a short-lived cookie
22
+ // to prevent login-CSRF (S4).
23
+ setCookie(c, '__Host-pkce-csrf', csrfToken, {
24
+ httpOnly: true,
25
+ secure: true,
26
+ sameSite: 'Strict',
27
+ path: '/',
28
+ maxAge: 600,
29
+ });
15
30
  const as = await getAuthorizationServer(config, cache);
16
31
  if (!as.authorization_endpoint) {
17
32
  return c.text('Missing authorization_endpoint', 500);
@@ -19,17 +34,22 @@ export function authRoutes(config, cache) {
19
34
  const authorizationUrl = new URL(as.authorization_endpoint);
20
35
  authorizationUrl.searchParams.set('client_id', config.clientId);
21
36
  authorizationUrl.searchParams.set('response_type', 'code');
22
- authorizationUrl.searchParams.set('redirect_uri', `${config.baseUrl}/auth/callback`);
37
+ authorizationUrl.searchParams.set('redirect_uri', `${config.baseUrl}${config.routes?.callback ?? '/auth/callback'}`);
23
38
  authorizationUrl.searchParams.set('scope', (config.scopes ?? ['openid', 'profile', 'email', 'offline_access']).join(' '));
24
39
  authorizationUrl.searchParams.set('state', state);
25
40
  authorizationUrl.searchParams.set('code_challenge', code_challenge);
26
41
  authorizationUrl.searchParams.set('code_challenge_method', 'S256');
42
+ authorizationUrl.searchParams.set('nonce', nonce);
27
43
  if (config.audience) {
28
44
  authorizationUrl.searchParams.set('audience', config.audience);
29
45
  }
46
+ const requestUrl = new URL(c.req.url);
47
+ if (requestUrl.protocol === 'http:' && requestUrl.hostname !== 'localhost' && requestUrl.hostname !== '127.0.0.1') {
48
+ console.warn('Bezzie: running on HTTP in a non-localhost environment. The __Host- cookie prefix requires HTTPS — sessions will not be set correctly.');
49
+ }
30
50
  return c.redirect(authorizationUrl.toString());
31
51
  });
32
- router.get('/callback', async (c) => {
52
+ router.get(config.routes?.callback ?? '/callback', async (c) => {
33
53
  const error = c.req.query('error');
34
54
  if (error) {
35
55
  const ERROR_MESSAGES = {
@@ -48,27 +68,50 @@ export function authRoutes(config, cache) {
48
68
  if (!stored) {
49
69
  return c.text('Invalid or expired state', 400);
50
70
  }
51
- const { codeVerifier, returnTo } = stored;
71
+ const { codeVerifier, returnTo, csrfToken: storedCsrfToken, nonce: storedNonce } = stored;
72
+ if (!codeVerifier || codeVerifier.length < 43) {
73
+ return c.text('Invalid PKCE state', 400);
74
+ }
75
+ // Login-CSRF protection (S4): the cookie set at /login must match the
76
+ // csrfToken stored alongside the PKCE state in KV.
77
+ const cookieCsrfToken = getCookie(c, '__Host-pkce-csrf');
78
+ if (!cookieCsrfToken || !storedCsrfToken || cookieCsrfToken !== storedCsrfToken) {
79
+ return c.text('Invalid CSRF token', 400);
80
+ }
52
81
  await config.adapter.delete(`pkce:${state}`);
82
+ // Clear the CSRF cookie now that it has served its purpose.
83
+ deleteCookie(c, '__Host-pkce-csrf', {
84
+ path: '/',
85
+ secure: true,
86
+ httpOnly: true,
87
+ sameSite: 'Strict',
88
+ });
53
89
  const as = await getAuthorizationServer(config, cache);
54
90
  const client = { client_id: config.clientId };
55
91
  const clientAuth = oauth.ClientSecretPost(config.clientSecret);
56
92
  const callbackParams = oauth.validateAuthResponse(as, client, new URL(c.req.url).searchParams, oauth.skipStateCheck);
57
- const response = await oauth.authorizationCodeGrantRequest(as, client, clientAuth, callbackParams, `${config.baseUrl}/auth/callback`, codeVerifier);
93
+ const response = await oauth.authorizationCodeGrantRequest(as, client, clientAuth, callbackParams, `${config.baseUrl}${config.routes?.callback ?? '/auth/callback'}`, codeVerifier, { signal: AbortSignal.timeout(5000) });
58
94
  let result;
59
95
  try {
60
- result = await oauth.processAuthorizationCodeResponse(as, client, response);
96
+ // S8: pass expectedNonce so oauth4webapi verifies the ID token `nonce`
97
+ // claim matches the value we sent in the authorization request.
98
+ result = await oauth.processAuthorizationCodeResponse(as, client, response, {
99
+ expectedNonce: storedNonce,
100
+ });
61
101
  }
62
102
  catch (err) {
63
103
  if (err instanceof oauth.ResponseBodyError) {
104
+ console.error('Bezzie: OAuth 2.0 token exchange error:', err);
64
105
  return c.text('OAuth 2.0 error', 400);
65
106
  }
66
- throw err;
107
+ console.error('Bezzie: processAuthorizationCodeResponse failed (possible nonce mismatch):', err);
108
+ return c.text('Invalid ID token', 400);
67
109
  }
68
110
  const { access_token, refresh_token, expires_in, id_token } = result;
69
111
  const claims = oauth.getValidatedIdTokenClaims(result);
70
112
  if (!claims) {
71
- return c.json({ error: 'id_token missing from token response' }, 500);
113
+ console.error('Bezzie: id_token missing from token response');
114
+ return c.text('Authentication failed', 500);
72
115
  }
73
116
  if (!refresh_token) {
74
117
  console.warn('Bezzie: refresh_token is missing from the token response. offline_access may not be enabled or supported by the provider.');
@@ -76,6 +119,35 @@ export function authRoutes(config, cache) {
76
119
  const sessionId = Array.from(crypto.getRandomValues(new Uint8Array(16)))
77
120
  .map((b) => b.toString(16).padStart(2, '0'))
78
121
  .join('');
122
+ let mappedUser;
123
+ if (config.mapClaims) {
124
+ try {
125
+ const mapped = await config.mapClaims(claims);
126
+ mappedUser = {
127
+ ...mapped,
128
+ sub: claims.sub,
129
+ email: claims.email,
130
+ };
131
+ }
132
+ catch (err) {
133
+ // mapClaims threw — abort login, clean up
134
+ deleteCookie(c, config.cookieName ?? '__Host-session', {
135
+ path: '/',
136
+ secure: true,
137
+ httpOnly: true,
138
+ sameSite: 'Strict',
139
+ });
140
+ console.error('Bezzie: mapClaims threw, aborting login:', err instanceof Error ? err.message : String(err));
141
+ return c.text('Login failed', 500);
142
+ }
143
+ }
144
+ else {
145
+ mappedUser = {
146
+ ...claims,
147
+ sub: claims.sub,
148
+ email: claims.email,
149
+ };
150
+ }
79
151
  const session = {
80
152
  _type: 'session',
81
153
  accessToken: access_token,
@@ -83,14 +155,21 @@ export function authRoutes(config, cache) {
83
155
  idToken: id_token,
84
156
  expiresAt: Math.floor(Date.now() / 1000) + (expires_in || 3600),
85
157
  createdAt: Math.floor(Date.now() / 1000),
86
- user: {
87
- ...claims,
88
- sub: claims.sub,
89
- email: claims.email,
90
- },
158
+ user: mappedUser,
91
159
  };
160
+ // Prevent session fixation (S11): if the user already had a session cookie,
161
+ // remove its KV entry before minting a fresh session.
162
+ const existingSessionId = getCookie(c, config.cookieName ?? '__Host-session');
163
+ if (existingSessionId) {
164
+ await sessionStore.delete(`session:${existingSessionId}`);
165
+ }
92
166
  // TTL for session in KV. Set to 30 days as per bug fix 3.
93
- await sessionStore.set(sessionId, session, config.sessionTtlSeconds ?? 30 * 24 * 60 * 60);
167
+ await sessionStore.set(`session:${sessionId}`, session, config.sessionTtlSeconds ?? 30 * 24 * 60 * 60);
168
+ // SameSite=Strict is correct here: this cookie is set *after* the IdP redirect has
169
+ // already completed (i.e. in /callback, not before the redirect). By the time this
170
+ // setCookie runs the browser is back on our origin, so Strict does not block the
171
+ // cookie from being sent. Using Strict rather than Lax gives the strongest
172
+ // cross-site request forgery protection for all subsequent requests.
94
173
  setCookie(c, config.cookieName ?? '__Host-session', sessionId, {
95
174
  httpOnly: true,
96
175
  secure: true,
@@ -98,20 +177,73 @@ export function authRoutes(config, cache) {
98
177
  path: '/',
99
178
  maxAge: config.sessionTtlSeconds ?? 30 * 24 * 60 * 60, // 30 days, matches KV session TTL
100
179
  });
180
+ if (config.onLogin) {
181
+ try {
182
+ await config.onLogin({
183
+ user: session.user,
184
+ sessionId,
185
+ tokens: { accessToken: access_token, expiresAt: session.expiresAt },
186
+ isNewSession: true,
187
+ c,
188
+ });
189
+ }
190
+ catch (err) {
191
+ // onLogin errors bubble — abort login, clean up session
192
+ await sessionStore.delete(`session:${sessionId}`);
193
+ deleteCookie(c, config.cookieName ?? '__Host-session', {
194
+ path: '/',
195
+ secure: true,
196
+ httpOnly: true,
197
+ sameSite: 'Strict',
198
+ });
199
+ console.error('Bezzie: onLogin hook threw, aborting login:', err instanceof Error ? err.message : String(err));
200
+ return c.text('Login failed', 500);
201
+ }
202
+ }
101
203
  if (returnTo && returnTo.startsWith('/') && !returnTo.startsWith('//')) {
102
204
  return c.redirect(returnTo);
103
205
  }
104
206
  return c.redirect('/');
105
207
  });
106
- router.post('/logout', async (c) => {
208
+ router.post(config.routes?.logout ?? '/logout', async (c) => {
107
209
  const sessionId = getCookie(c, config.cookieName ?? '__Host-session');
108
210
  let idToken;
211
+ let refreshToken;
212
+ let loggedOutUser;
109
213
  if (sessionId) {
110
- const session = await sessionStore.get(sessionId);
214
+ const session = await sessionStore.get(`session:${sessionId}`);
111
215
  if (session && session._type === 'session') {
112
216
  idToken = session.idToken;
217
+ refreshToken = session.refreshToken;
218
+ loggedOutUser = session.user;
219
+ }
220
+ await sessionStore.delete(`session:${sessionId}`);
221
+ if (config.onLogout && loggedOutUser) {
222
+ try {
223
+ await config.onLogout({ user: loggedOutUser, sessionId, c });
224
+ }
225
+ catch (err) {
226
+ const handler = config.onError ?? ((e) => console.error('Bezzie: onLogout hook threw:', e instanceof Error ? e.message : String(e)));
227
+ handler(err, { hook: 'onLogout', c });
228
+ }
229
+ }
230
+ }
231
+ const as = await getAuthorizationServer(config, cache);
232
+ // S12: best-effort revoke the refresh token at the IdP so the tokens are
233
+ // invalidated server-side, not just locally. Wrapped in try/catch — a
234
+ // revocation failure must not block the logout redirect.
235
+ if (refreshToken && as.revocation_endpoint) {
236
+ try {
237
+ const client = { client_id: config.clientId };
238
+ const clientAuth = oauth.ClientSecretPost(config.clientSecret);
239
+ const response = await oauth.revocationRequest(as, client, clientAuth, refreshToken, {
240
+ signal: AbortSignal.timeout(5000),
241
+ });
242
+ await oauth.processRevocationResponse(response);
243
+ }
244
+ catch (err) {
245
+ console.error('Bezzie: token revocation failed (continuing with logout):', err);
113
246
  }
114
- await sessionStore.delete(sessionId);
115
247
  }
116
248
  deleteCookie(c, config.cookieName ?? '__Host-session', {
117
249
  path: '/',
@@ -119,10 +251,9 @@ export function authRoutes(config, cache) {
119
251
  httpOnly: true,
120
252
  sameSite: 'Strict',
121
253
  });
122
- const as = await getAuthorizationServer(config, cache);
123
254
  let logoutUrl;
124
- if (config.providerHints?.logoutUrl) {
125
- logoutUrl = new URL(config.providerHints.logoutUrl);
255
+ if (config.providerOverrides?.logoutUrl) {
256
+ logoutUrl = new URL(config.providerOverrides.logoutUrl);
126
257
  logoutUrl.searchParams.set('client_id', config.clientId);
127
258
  logoutUrl.searchParams.set('returnTo', config.baseUrl);
128
259
  if (idToken) {
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -40,5 +40,14 @@ export interface Session<TUser extends Record<string, unknown> = Record<string,
40
40
  email?: string;
41
41
  } & TUser;
42
42
  }
43
+ /**
44
+ * Alias for {@link Session} intended for consumers that want to type the
45
+ * shape of session data as it is persisted by a {@link SessionAdapter}.
46
+ *
47
+ * `Session<TUser>` describes the runtime session object. `StoredSession<TUser>`
48
+ * is the same shape — the alias exists so callers can write intent-revealing
49
+ * types like `adapter.get(id) as StoredSession<MyUser> | null`.
50
+ */
51
+ export type StoredSession<TUser extends Record<string, unknown> = Record<string, unknown>> = Session<TUser>;
43
52
  export * from './adapters';
44
53
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtF;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE;QACJ;;WAEG;QACH,GAAG,EAAE,MAAM,CAAA;QACX;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,KAAK,CAAA;CACV;AAED,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtF;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE;QACJ;;WAEG;QACH,GAAG,EAAE,MAAM,CAAA;QACX;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,KAAK,CAAA;CACV;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;AAE3G,cAAc,YAAY,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AA2CA,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAqDA,cAAc,YAAY,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bezzie",
3
- "version": "0.2.1",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "engines": {
@@ -8,15 +8,18 @@
8
8
  },
9
9
  "description": "BFF OAuth 2.0 auth library for Cloudflare Workers",
10
10
  "keywords": [
11
- "hono",
12
- "cloudflare-workers",
13
- "oauth",
14
- "oidc",
15
- "auth",
16
11
  "bff",
17
- "session",
12
+ "backend-for-frontend",
18
13
  "jwt",
19
- "pkce"
14
+ "pkce",
15
+ "token-rotation",
16
+ "oidc",
17
+ "cloudflare-workers",
18
+ "oauth2",
19
+ "auth",
20
+ "hono",
21
+ "oauth",
22
+ "session"
20
23
  ],
21
24
  "main": "dist/index.js",
22
25
  "types": "dist/index.d.ts",
@@ -24,6 +27,18 @@
24
27
  ".": {
25
28
  "import": "./dist/index.js",
26
29
  "types": "./dist/index.d.ts"
30
+ },
31
+ "./cloudflare": {
32
+ "import": "./dist/adapters/cloudflare-kv.js",
33
+ "types": "./dist/adapters/cloudflare-kv.d.ts"
34
+ },
35
+ "./redis": {
36
+ "import": "./dist/adapters/redis.js",
37
+ "types": "./dist/adapters/redis.d.ts"
38
+ },
39
+ "./memory": {
40
+ "import": "./dist/adapters/memory.js",
41
+ "types": "./dist/adapters/memory.d.ts"
27
42
  }
28
43
  },
29
44
  "files": [