@ereo/auth 0.2.37 → 0.2.39
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/auth.d.ts.map +1 -1
- package/dist/index.js +58 -3
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +14 -0
- package/package.json +3 -3
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,12 @@ async function fetchWithTimeout(url, init = {}, timeoutMs = DEFAULT_TIMEOUT) {
|
|
|
15
15
|
clearTimeout(timer);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
async function assertOAuthResponse(response, context) {
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
const errorBody = await response.text().catch(() => "unknown error");
|
|
21
|
+
throw new Error(`${context} failed (${response.status}): ${errorBody}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
18
24
|
function credentials(config) {
|
|
19
25
|
return {
|
|
20
26
|
id: config.id || "credentials",
|
|
@@ -55,6 +61,7 @@ function github(config) {
|
|
|
55
61
|
redirect_uri: config.redirectUri
|
|
56
62
|
})
|
|
57
63
|
});
|
|
64
|
+
await assertOAuthResponse(tokenResponse, "GitHub token exchange");
|
|
58
65
|
const tokenData = await tokenResponse.json();
|
|
59
66
|
if (!tokenData.access_token)
|
|
60
67
|
return null;
|
|
@@ -111,6 +118,7 @@ function github(config) {
|
|
|
111
118
|
redirect_uri: redirectUri
|
|
112
119
|
})
|
|
113
120
|
});
|
|
121
|
+
await assertOAuthResponse(tokenResponse, "GitHub token exchange");
|
|
114
122
|
const tokenData = await tokenResponse.json();
|
|
115
123
|
if (!tokenData.access_token)
|
|
116
124
|
return null;
|
|
@@ -175,6 +183,7 @@ function google(config) {
|
|
|
175
183
|
grant_type: "authorization_code"
|
|
176
184
|
})
|
|
177
185
|
});
|
|
186
|
+
await assertOAuthResponse(tokenResponse, "Google token exchange");
|
|
178
187
|
const tokenData = await tokenResponse.json();
|
|
179
188
|
if (!tokenData.access_token)
|
|
180
189
|
return null;
|
|
@@ -225,6 +234,7 @@ function google(config) {
|
|
|
225
234
|
grant_type: "authorization_code"
|
|
226
235
|
})
|
|
227
236
|
});
|
|
237
|
+
await assertOAuthResponse(tokenResponse, "Google token exchange");
|
|
228
238
|
const tokenData = await tokenResponse.json();
|
|
229
239
|
if (!tokenData.access_token)
|
|
230
240
|
return null;
|
|
@@ -277,6 +287,7 @@ function discord(config) {
|
|
|
277
287
|
redirect_uri: config.redirectUri || ""
|
|
278
288
|
})
|
|
279
289
|
});
|
|
290
|
+
await assertOAuthResponse(tokenResponse, "Discord token exchange");
|
|
280
291
|
const tokenData = await tokenResponse.json();
|
|
281
292
|
if (!tokenData.access_token)
|
|
282
293
|
return null;
|
|
@@ -331,6 +342,7 @@ function discord(config) {
|
|
|
331
342
|
redirect_uri: redirectUri
|
|
332
343
|
})
|
|
333
344
|
});
|
|
345
|
+
await assertOAuthResponse(tokenResponse, "Discord token exchange");
|
|
334
346
|
const tokenData = await tokenResponse.json();
|
|
335
347
|
if (!tokenData.access_token)
|
|
336
348
|
return null;
|
|
@@ -389,6 +401,7 @@ function oauth(config) {
|
|
|
389
401
|
redirect_uri: config.redirectUri || ""
|
|
390
402
|
})
|
|
391
403
|
});
|
|
404
|
+
await assertOAuthResponse(tokenResponse, `${config.name} token exchange`);
|
|
392
405
|
const tokenData = await tokenResponse.json();
|
|
393
406
|
if (!tokenData.access_token)
|
|
394
407
|
return null;
|
|
@@ -444,6 +457,7 @@ function oauth(config) {
|
|
|
444
457
|
redirect_uri: redirectUri
|
|
445
458
|
})
|
|
446
459
|
});
|
|
460
|
+
await assertOAuthResponse(tokenResponse, `${config.name} token exchange`);
|
|
447
461
|
const tokenData = await tokenResponse.json();
|
|
448
462
|
if (!tokenData.access_token)
|
|
449
463
|
return null;
|
|
@@ -513,10 +527,16 @@ function apiKey(config) {
|
|
|
513
527
|
}
|
|
514
528
|
|
|
515
529
|
// src/auth.ts
|
|
530
|
+
var _signingKeyCache = new Map;
|
|
516
531
|
async function getSigningKey(secret) {
|
|
532
|
+
const cached = _signingKeyCache.get(secret);
|
|
533
|
+
if (cached)
|
|
534
|
+
return cached;
|
|
517
535
|
const encoder = new TextEncoder;
|
|
518
536
|
const keyData = encoder.encode(secret);
|
|
519
|
-
|
|
537
|
+
const key = await crypto.subtle.importKey("raw", keyData, { name: "HMAC", hash: "SHA-256" }, false, ["sign", "verify"]);
|
|
538
|
+
_signingKeyCache.set(secret, key);
|
|
539
|
+
return key;
|
|
520
540
|
}
|
|
521
541
|
function base64UrlEncode(data) {
|
|
522
542
|
let binary = "";
|
|
@@ -577,6 +597,7 @@ async function verifyJWT(token, secret) {
|
|
|
577
597
|
|
|
578
598
|
class SessionStore {
|
|
579
599
|
maxAge;
|
|
600
|
+
static MAX_SESSIONS = 1e4;
|
|
580
601
|
sessions = new Map;
|
|
581
602
|
cleanupInterval = null;
|
|
582
603
|
constructor(maxAge) {
|
|
@@ -589,6 +610,17 @@ class SessionStore {
|
|
|
589
610
|
return base64UrlEncode(array);
|
|
590
611
|
}
|
|
591
612
|
set(sessionId, session) {
|
|
613
|
+
if (this.sessions.size >= SessionStore.MAX_SESSIONS && !this.sessions.has(sessionId)) {
|
|
614
|
+
this.cleanup();
|
|
615
|
+
if (this.sessions.size >= SessionStore.MAX_SESSIONS) {
|
|
616
|
+
const entries = Array.from(this.sessions.entries());
|
|
617
|
+
entries.sort((a, b) => a[1].lastAccessed - b[1].lastAccessed);
|
|
618
|
+
const toEvict = Math.max(1, Math.floor(entries.length * 0.1));
|
|
619
|
+
for (let i = 0;i < toEvict; i++) {
|
|
620
|
+
this.sessions.delete(entries[i][0]);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
592
624
|
this.sessions.set(sessionId, {
|
|
593
625
|
session,
|
|
594
626
|
createdAt: Date.now(),
|
|
@@ -789,6 +821,17 @@ function createAuthPlugin(config) {
|
|
|
789
821
|
const token = authHeader.slice(7);
|
|
790
822
|
const session = await sessionFromToken(token);
|
|
791
823
|
if (session) {
|
|
824
|
+
if (config.callbacks?.onSessionValidate) {
|
|
825
|
+
const isValid = await config.callbacks.onSessionValidate(session);
|
|
826
|
+
if (!isValid) {
|
|
827
|
+
log("Bearer session validation failed");
|
|
828
|
+
return null;
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
if (session.expiresAt && new Date(session.expiresAt) < new Date) {
|
|
832
|
+
log("Bearer session expired");
|
|
833
|
+
return null;
|
|
834
|
+
}
|
|
792
835
|
log("Session extracted from Authorization header");
|
|
793
836
|
return session;
|
|
794
837
|
}
|
|
@@ -881,7 +924,7 @@ function createAuthPlugin(config) {
|
|
|
881
924
|
isAuthenticated: () => authContext.session !== null,
|
|
882
925
|
hasRole: (role) => authContext.session?.roles?.includes(role) ?? false,
|
|
883
926
|
hasAnyRole: (roles) => roles.some((role) => authContext.session?.roles?.includes(role)),
|
|
884
|
-
hasAllRoles: (roles) => roles.every((role) => authContext.session
|
|
927
|
+
hasAllRoles: (roles) => authContext.session?.roles ? roles.every((role) => authContext.session.roles.includes(role)) : false,
|
|
885
928
|
getUser: () => {
|
|
886
929
|
if (!authContext.session)
|
|
887
930
|
return null;
|
|
@@ -1027,6 +1070,18 @@ function withAuth(handler, options) {
|
|
|
1027
1070
|
return handler({ ...args, auth });
|
|
1028
1071
|
};
|
|
1029
1072
|
}
|
|
1073
|
+
function timingSafeEqual(a, b) {
|
|
1074
|
+
if (a.length !== b.length)
|
|
1075
|
+
return false;
|
|
1076
|
+
const encoder = new TextEncoder;
|
|
1077
|
+
const bufA = encoder.encode(a);
|
|
1078
|
+
const bufB = encoder.encode(b);
|
|
1079
|
+
let result = 0;
|
|
1080
|
+
for (let i = 0;i < bufA.length; i++) {
|
|
1081
|
+
result |= bufA[i] ^ bufB[i];
|
|
1082
|
+
}
|
|
1083
|
+
return result === 0;
|
|
1084
|
+
}
|
|
1030
1085
|
function getOAuthUrl(context, providerId, redirectUri) {
|
|
1031
1086
|
const config = context.get("authConfig");
|
|
1032
1087
|
const provider = config?.providers?.find((p) => p.id === providerId);
|
|
@@ -1055,7 +1110,7 @@ async function handleOAuthCallback(context, request, providerId, params) {
|
|
|
1055
1110
|
}
|
|
1056
1111
|
const cookie = request.headers.get("cookie");
|
|
1057
1112
|
const storedState = cookie ? parseCookie(cookie, "__oauth_state") : undefined;
|
|
1058
|
-
if (!storedState || storedState
|
|
1113
|
+
if (!storedState || !timingSafeEqual(storedState, params.state)) {
|
|
1059
1114
|
throw new Error("OAuth state mismatch: possible CSRF attack");
|
|
1060
1115
|
}
|
|
1061
1116
|
const clearStateCookie = buildClearCookieHeader("__oauth_state", { path: "/" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
|
package/dist/providers/index.js
CHANGED
|
@@ -15,6 +15,12 @@ async function fetchWithTimeout(url, init = {}, timeoutMs = DEFAULT_TIMEOUT) {
|
|
|
15
15
|
clearTimeout(timer);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
async function assertOAuthResponse(response, context) {
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
const errorBody = await response.text().catch(() => "unknown error");
|
|
21
|
+
throw new Error(`${context} failed (${response.status}): ${errorBody}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
18
24
|
function credentials(config) {
|
|
19
25
|
return {
|
|
20
26
|
id: config.id || "credentials",
|
|
@@ -55,6 +61,7 @@ function github(config) {
|
|
|
55
61
|
redirect_uri: config.redirectUri
|
|
56
62
|
})
|
|
57
63
|
});
|
|
64
|
+
await assertOAuthResponse(tokenResponse, "GitHub token exchange");
|
|
58
65
|
const tokenData = await tokenResponse.json();
|
|
59
66
|
if (!tokenData.access_token)
|
|
60
67
|
return null;
|
|
@@ -111,6 +118,7 @@ function github(config) {
|
|
|
111
118
|
redirect_uri: redirectUri
|
|
112
119
|
})
|
|
113
120
|
});
|
|
121
|
+
await assertOAuthResponse(tokenResponse, "GitHub token exchange");
|
|
114
122
|
const tokenData = await tokenResponse.json();
|
|
115
123
|
if (!tokenData.access_token)
|
|
116
124
|
return null;
|
|
@@ -175,6 +183,7 @@ function google(config) {
|
|
|
175
183
|
grant_type: "authorization_code"
|
|
176
184
|
})
|
|
177
185
|
});
|
|
186
|
+
await assertOAuthResponse(tokenResponse, "Google token exchange");
|
|
178
187
|
const tokenData = await tokenResponse.json();
|
|
179
188
|
if (!tokenData.access_token)
|
|
180
189
|
return null;
|
|
@@ -225,6 +234,7 @@ function google(config) {
|
|
|
225
234
|
grant_type: "authorization_code"
|
|
226
235
|
})
|
|
227
236
|
});
|
|
237
|
+
await assertOAuthResponse(tokenResponse, "Google token exchange");
|
|
228
238
|
const tokenData = await tokenResponse.json();
|
|
229
239
|
if (!tokenData.access_token)
|
|
230
240
|
return null;
|
|
@@ -277,6 +287,7 @@ function discord(config) {
|
|
|
277
287
|
redirect_uri: config.redirectUri || ""
|
|
278
288
|
})
|
|
279
289
|
});
|
|
290
|
+
await assertOAuthResponse(tokenResponse, "Discord token exchange");
|
|
280
291
|
const tokenData = await tokenResponse.json();
|
|
281
292
|
if (!tokenData.access_token)
|
|
282
293
|
return null;
|
|
@@ -331,6 +342,7 @@ function discord(config) {
|
|
|
331
342
|
redirect_uri: redirectUri
|
|
332
343
|
})
|
|
333
344
|
});
|
|
345
|
+
await assertOAuthResponse(tokenResponse, "Discord token exchange");
|
|
334
346
|
const tokenData = await tokenResponse.json();
|
|
335
347
|
if (!tokenData.access_token)
|
|
336
348
|
return null;
|
|
@@ -389,6 +401,7 @@ function oauth(config) {
|
|
|
389
401
|
redirect_uri: config.redirectUri || ""
|
|
390
402
|
})
|
|
391
403
|
});
|
|
404
|
+
await assertOAuthResponse(tokenResponse, `${config.name} token exchange`);
|
|
392
405
|
const tokenData = await tokenResponse.json();
|
|
393
406
|
if (!tokenData.access_token)
|
|
394
407
|
return null;
|
|
@@ -444,6 +457,7 @@ function oauth(config) {
|
|
|
444
457
|
redirect_uri: redirectUri
|
|
445
458
|
})
|
|
446
459
|
});
|
|
460
|
+
await assertOAuthResponse(tokenResponse, `${config.name} token exchange`);
|
|
447
461
|
const tokenData = await tokenResponse.json();
|
|
448
462
|
if (!tokenData.access_token)
|
|
449
463
|
return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ereo/auth",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.39",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Enoch Kujem Abassey",
|
|
6
6
|
"homepage": "https://ereojs.github.io/ereoJS",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"typecheck": "tsc --noEmit"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@ereo/core": "^0.2.
|
|
41
|
-
"@ereo/router": "^0.2.
|
|
40
|
+
"@ereo/core": "^0.2.39",
|
|
41
|
+
"@ereo/router": "^0.2.39"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/bun": "^1.1.0",
|