bezzie 0.2.2 → 1.0.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/dist/routes.js CHANGED
@@ -5,20 +5,25 @@ 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();
12
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();
13
18
  const returnTo = c.req.query('returnTo');
14
- // Store state, codeVerifier and csrfToken in adapter
15
- await config.adapter.set(`pkce:${state}`, { _type: 'pkce', codeVerifier: code_verifier, returnTo, csrfToken }, 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
16
21
  // Bind the PKCE state to the user's browser session via a short-lived cookie
17
22
  // to prevent login-CSRF (S4).
18
23
  setCookie(c, '__Host-pkce-csrf', csrfToken, {
19
24
  httpOnly: true,
20
25
  secure: true,
21
- sameSite: 'Strict',
26
+ sameSite: 'Lax', // Must be Lax — Strict blocks cross-site redirects from the IdP
22
27
  path: '/',
23
28
  maxAge: 600,
24
29
  });
@@ -29,17 +34,22 @@ export function authRoutes(config, cache) {
29
34
  const authorizationUrl = new URL(as.authorization_endpoint);
30
35
  authorizationUrl.searchParams.set('client_id', config.clientId);
31
36
  authorizationUrl.searchParams.set('response_type', 'code');
32
- authorizationUrl.searchParams.set('redirect_uri', `${config.baseUrl}/auth/callback`);
37
+ authorizationUrl.searchParams.set('redirect_uri', `${config.baseUrl}${config.routes?.callback ?? '/auth/callback'}`);
33
38
  authorizationUrl.searchParams.set('scope', (config.scopes ?? ['openid', 'profile', 'email', 'offline_access']).join(' '));
34
39
  authorizationUrl.searchParams.set('state', state);
35
40
  authorizationUrl.searchParams.set('code_challenge', code_challenge);
36
41
  authorizationUrl.searchParams.set('code_challenge_method', 'S256');
42
+ authorizationUrl.searchParams.set('nonce', nonce);
37
43
  if (config.audience) {
38
44
  authorizationUrl.searchParams.set('audience', config.audience);
39
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
+ }
40
50
  return c.redirect(authorizationUrl.toString());
41
51
  });
42
- router.get('/callback', async (c) => {
52
+ router.get(config.routes?.callback ?? '/callback', async (c) => {
43
53
  const error = c.req.query('error');
44
54
  if (error) {
45
55
  const ERROR_MESSAGES = {
@@ -58,7 +68,10 @@ export function authRoutes(config, cache) {
58
68
  if (!stored) {
59
69
  return c.text('Invalid or expired state', 400);
60
70
  }
61
- const { codeVerifier, returnTo, csrfToken: storedCsrfToken } = 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
+ }
62
75
  // Login-CSRF protection (S4): the cookie set at /login must match the
63
76
  // csrfToken stored alongside the PKCE state in KV.
64
77
  const cookieCsrfToken = getCookie(c, '__Host-pkce-csrf');
@@ -77,21 +90,28 @@ export function authRoutes(config, cache) {
77
90
  const client = { client_id: config.clientId };
78
91
  const clientAuth = oauth.ClientSecretPost(config.clientSecret);
79
92
  const callbackParams = oauth.validateAuthResponse(as, client, new URL(c.req.url).searchParams, oauth.skipStateCheck);
80
- 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) });
81
94
  let result;
82
95
  try {
83
- 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
+ });
84
101
  }
85
102
  catch (err) {
86
103
  if (err instanceof oauth.ResponseBodyError) {
104
+ console.error('Bezzie: OAuth 2.0 token exchange error:', err);
87
105
  return c.text('OAuth 2.0 error', 400);
88
106
  }
89
- throw err;
107
+ console.error('Bezzie: processAuthorizationCodeResponse failed (possible nonce mismatch):', err);
108
+ return c.text('Invalid ID token', 400);
90
109
  }
91
110
  const { access_token, refresh_token, expires_in, id_token } = result;
92
111
  const claims = oauth.getValidatedIdTokenClaims(result);
93
112
  if (!claims) {
94
- 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);
95
115
  }
96
116
  if (!refresh_token) {
97
117
  console.warn('Bezzie: refresh_token is missing from the token response. offline_access may not be enabled or supported by the provider.');
@@ -99,6 +119,35 @@ export function authRoutes(config, cache) {
99
119
  const sessionId = Array.from(crypto.getRandomValues(new Uint8Array(16)))
100
120
  .map((b) => b.toString(16).padStart(2, '0'))
101
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
+ }
102
151
  const session = {
103
152
  _type: 'session',
104
153
  accessToken: access_token,
@@ -106,14 +155,21 @@ export function authRoutes(config, cache) {
106
155
  idToken: id_token,
107
156
  expiresAt: Math.floor(Date.now() / 1000) + (expires_in || 3600),
108
157
  createdAt: Math.floor(Date.now() / 1000),
109
- user: {
110
- ...claims,
111
- sub: claims.sub,
112
- email: claims.email,
113
- },
158
+ user: mappedUser,
114
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
+ }
115
166
  // TTL for session in KV. Set to 30 days as per bug fix 3.
116
- 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.
117
173
  setCookie(c, config.cookieName ?? '__Host-session', sessionId, {
118
174
  httpOnly: true,
119
175
  secure: true,
@@ -121,20 +177,73 @@ export function authRoutes(config, cache) {
121
177
  path: '/',
122
178
  maxAge: config.sessionTtlSeconds ?? 30 * 24 * 60 * 60, // 30 days, matches KV session TTL
123
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
+ }
124
203
  if (returnTo && returnTo.startsWith('/') && !returnTo.startsWith('//')) {
125
204
  return c.redirect(returnTo);
126
205
  }
127
206
  return c.redirect('/');
128
207
  });
129
- router.post('/logout', async (c) => {
208
+ router.post(config.routes?.logout ?? '/logout', async (c) => {
130
209
  const sessionId = getCookie(c, config.cookieName ?? '__Host-session');
131
210
  let idToken;
211
+ let refreshToken;
212
+ let loggedOutUser;
132
213
  if (sessionId) {
133
- const session = await sessionStore.get(sessionId);
214
+ const session = await sessionStore.get(`session:${sessionId}`);
134
215
  if (session && session._type === 'session') {
135
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);
136
246
  }
137
- await sessionStore.delete(sessionId);
138
247
  }
139
248
  deleteCookie(c, config.cookieName ?? '__Host-session', {
140
249
  path: '/',
@@ -142,10 +251,9 @@ export function authRoutes(config, cache) {
142
251
  httpOnly: true,
143
252
  sameSite: 'Strict',
144
253
  });
145
- const as = await getAuthorizationServer(config, cache);
146
254
  let logoutUrl;
147
- if (config.providerHints?.logoutUrl) {
148
- logoutUrl = new URL(config.providerHints.logoutUrl);
255
+ if (config.providerOverrides?.logoutUrl) {
256
+ logoutUrl = new URL(config.providerOverrides.logoutUrl);
149
257
  logoutUrl.searchParams.set('client_id', config.clientId);
150
258
  logoutUrl.searchParams.set('returnTo', config.baseUrl);
151
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.2",
3
+ "version": "1.0.1",
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": [