@seamless-auth/core 0.7.0 → 0.10.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/README.md +16 -0
- package/dist/authFetch.d.ts.map +1 -1
- package/dist/authFetch.js +3 -5
- package/dist/authFetch.js.map +1 -1
- package/dist/authMessaging.d.ts +0 -13
- package/dist/authMessaging.d.ts.map +1 -1
- package/dist/createServiceToken.d.ts.map +1 -1
- package/dist/createServiceToken.js +2 -0
- package/dist/createServiceToken.js.map +1 -1
- package/dist/ensureCookies.d.ts.map +1 -1
- package/dist/ensureCookies.js +32 -4
- package/dist/ensureCookies.js.map +1 -1
- package/dist/getSeamlessUser.d.ts +17 -2
- package/dist/getSeamlessUser.d.ts.map +1 -1
- package/dist/getSeamlessUser.js +4 -1
- package/dist/getSeamlessUser.js.map +1 -1
- package/dist/handlers/admin.d.ts +1 -0
- package/dist/handlers/admin.d.ts.map +1 -1
- package/dist/handlers/admin.js +8 -7
- package/dist/handlers/admin.js.map +1 -1
- package/dist/handlers/finishLogin.d.ts +2 -0
- package/dist/handlers/finishLogin.d.ts.map +1 -1
- package/dist/handlers/finishLogin.js +2 -1
- package/dist/handlers/finishLogin.js.map +1 -1
- package/dist/handlers/finishRegister.d.ts +2 -0
- package/dist/handlers/finishRegister.d.ts.map +1 -1
- package/dist/handlers/finishRegister.js +2 -1
- package/dist/handlers/finishRegister.js.map +1 -1
- package/dist/handlers/internalMetrics.d.ts +2 -1
- package/dist/handlers/internalMetrics.d.ts.map +1 -1
- package/dist/handlers/internalMetrics.js +1 -0
- package/dist/handlers/internalMetrics.js.map +1 -1
- package/dist/handlers/login.d.ts +2 -0
- package/dist/handlers/login.d.ts.map +1 -1
- package/dist/handlers/login.js +2 -1
- package/dist/handlers/login.js.map +1 -1
- package/dist/handlers/logout.d.ts +1 -0
- package/dist/handlers/logout.d.ts.map +1 -1
- package/dist/handlers/logout.js +1 -0
- package/dist/handlers/logout.js.map +1 -1
- package/dist/handlers/me.d.ts +1 -0
- package/dist/handlers/me.d.ts.map +1 -1
- package/dist/handlers/me.js +1 -0
- package/dist/handlers/me.js.map +1 -1
- package/dist/handlers/oauthHandlers.d.ts +2 -0
- package/dist/handlers/oauthHandlers.d.ts.map +1 -1
- package/dist/handlers/oauthHandlers.js +3 -1
- package/dist/handlers/oauthHandlers.js.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts +1 -0
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.js +1 -2
- package/dist/handlers/pollMagicLinkConfirmationHandler.js.map +1 -1
- package/dist/handlers/sessions.d.ts +1 -0
- package/dist/handlers/sessions.d.ts.map +1 -1
- package/dist/handlers/sessions.js +2 -1
- package/dist/handlers/sessions.js.map +1 -1
- package/dist/handlers/switchOrganizationHandler.d.ts +2 -0
- package/dist/handlers/switchOrganizationHandler.d.ts.map +1 -1
- package/dist/handlers/switchOrganizationHandler.js +2 -1
- package/dist/handlers/switchOrganizationHandler.js.map +1 -1
- package/dist/handlers/systemConfig.d.ts +1 -0
- package/dist/handlers/systemConfig.d.ts.map +1 -1
- package/dist/handlers/systemConfig.js +3 -0
- package/dist/handlers/systemConfig.js.map +1 -1
- package/dist/handlers/verifyLoginOtpHandler.d.ts +2 -0
- package/dist/handlers/verifyLoginOtpHandler.d.ts.map +1 -1
- package/dist/handlers/verifyLoginOtpHandler.js +3 -2
- package/dist/handlers/verifyLoginOtpHandler.js.map +1 -1
- package/dist/handlers/verifyMagicLinkHandler.d.ts +1 -0
- package/dist/handlers/verifyMagicLinkHandler.d.ts.map +1 -1
- package/dist/handlers/verifyMagicLinkHandler.js +2 -1
- package/dist/handlers/verifyMagicLinkHandler.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/refreshAccessToken.d.ts.map +1 -1
- package/dist/refreshAccessToken.js +26 -1
- package/dist/refreshAccessToken.js.map +1 -1
- package/dist/validateSecrets.d.ts +7 -0
- package/dist/validateSecrets.d.ts.map +1 -0
- package/dist/validateSecrets.js +14 -0
- package/dist/validateSecrets.js.map +1 -0
- package/dist/verifySignedAuthResponse.d.ts +1 -1
- package/dist/verifySignedAuthResponse.d.ts.map +1 -1
- package/dist/verifySignedAuthResponse.js +15 -2
- package/dist/verifySignedAuthResponse.js.map +1 -1
- package/package.json +15 -3
- package/dist/handlers/bootstrapAdminInvite.d.ts +0 -20
- package/dist/handlers/bootstrapAdminInvite.d.ts.map +0 -1
- package/dist/handlers/bootstrapAdminInvite.js +0 -29
- package/dist/handlers/bootstrapAdminInvite.js.map +0 -1
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { createRemoteJWKSet, jwtVerify } from "jose";
|
|
2
|
-
|
|
2
|
+
// jose caches keys and applies a refetch cooldown per JWKS instance, so the instance
|
|
3
|
+
// must outlive a single call. Memoize per JWKS URL (one per auth server, so the map
|
|
4
|
+
// stays tiny) instead of building a fresh, empty-cache instance on every verification.
|
|
5
|
+
const jwksByUrl = new Map();
|
|
6
|
+
function getJwks(jwksUrl) {
|
|
7
|
+
let jwks = jwksByUrl.get(jwksUrl);
|
|
8
|
+
if (!jwks) {
|
|
9
|
+
jwks = createRemoteJWKSet(new URL(jwksUrl));
|
|
10
|
+
jwksByUrl.set(jwksUrl, jwks);
|
|
11
|
+
}
|
|
12
|
+
return jwks;
|
|
13
|
+
}
|
|
14
|
+
export async function verifySignedAuthResponse(token, authServerUrl, audience) {
|
|
3
15
|
try {
|
|
4
16
|
const jwksUrl = new URL("/.well-known/jwks.json", authServerUrl).toString();
|
|
5
|
-
const JWKS =
|
|
17
|
+
const JWKS = getJwks(jwksUrl);
|
|
6
18
|
const { payload } = await jwtVerify(token, JWKS, {
|
|
7
19
|
algorithms: ["RS256"],
|
|
8
20
|
issuer: authServerUrl,
|
|
21
|
+
audience,
|
|
9
22
|
});
|
|
10
23
|
return payload;
|
|
11
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifySignedAuthResponse.js","sourceRoot":"","sources":["../src/verifySignedAuthResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAa,EACb,aAAqB;
|
|
1
|
+
{"version":3,"file":"verifySignedAuthResponse.js","sourceRoot":"","sources":["../src/verifySignedAuthResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAErD,qFAAqF;AACrF,oFAAoF;AACpF,uFAAuF;AACvF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;AAE3E,SAAS,OAAO,CAAC,OAAe;IAC9B,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAa,EACb,aAAqB,EACrB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;YAC/C,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,aAAa;YACrB,QAAQ;SACT,CAAC,CAAC;QAEH,OAAO,OAAY,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamless-auth/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Framework-agnostic core authentication logic for SeamlessAuth",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"authentication",
|
|
7
|
+
"passwordless",
|
|
8
|
+
"webauthn",
|
|
9
|
+
"passkeys",
|
|
10
|
+
"jwt",
|
|
11
|
+
"seamless-auth"
|
|
12
|
+
],
|
|
5
13
|
"license": "AGPL-3.0-only",
|
|
6
14
|
"author": "Fells Code, LLC",
|
|
7
15
|
"sideEffects": false,
|
|
8
16
|
"homepage": "https://seamlessauth.com",
|
|
9
17
|
"repository": {
|
|
10
18
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/fells-code/seamless-auth-server
|
|
19
|
+
"url": "https://github.com/fells-code/seamless-auth-server.git",
|
|
20
|
+
"directory": "packages/core"
|
|
21
|
+
},
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/fells-code/seamless-auth-server/issues"
|
|
12
24
|
},
|
|
13
25
|
"type": "module",
|
|
14
26
|
"main": "./dist/index.js",
|
|
@@ -30,7 +42,7 @@
|
|
|
30
42
|
"README.md"
|
|
31
43
|
],
|
|
32
44
|
"engines": {
|
|
33
|
-
"node": ">=
|
|
45
|
+
"node": ">=24 <25"
|
|
34
46
|
},
|
|
35
47
|
"dependencies": {
|
|
36
48
|
"jose": "^6.1.3",
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export interface BootstrapAdminInviteOptions {
|
|
2
|
-
authServerUrl: string;
|
|
3
|
-
email: string;
|
|
4
|
-
authorization?: string;
|
|
5
|
-
serviceAuthorization?: string;
|
|
6
|
-
externalDelivery?: boolean;
|
|
7
|
-
forwardedClientIp?: string;
|
|
8
|
-
}
|
|
9
|
-
export interface BootstrapAdminInviteResult {
|
|
10
|
-
status: number;
|
|
11
|
-
body?: {
|
|
12
|
-
url?: string;
|
|
13
|
-
expiresAt: string;
|
|
14
|
-
token?: string;
|
|
15
|
-
delivery?: unknown;
|
|
16
|
-
};
|
|
17
|
-
error?: string;
|
|
18
|
-
}
|
|
19
|
-
export declare function bootstrapAdminInviteHandler(opts: BootstrapAdminInviteOptions): Promise<BootstrapAdminInviteResult>;
|
|
20
|
-
//# sourceMappingURL=bootstrapAdminInvite.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapAdminInvite.d.ts","sourceRoot":"","sources":["../../src/handlers/bootstrapAdminInvite.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,0BAA0B,CAAC,CAgCrC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { authFetch } from "../authFetch.js";
|
|
2
|
-
export async function bootstrapAdminInviteHandler(opts) {
|
|
3
|
-
const up = await authFetch(`${opts.authServerUrl}/internal/bootstrap/admin-invite`, {
|
|
4
|
-
method: "POST",
|
|
5
|
-
authorization: opts.authorization,
|
|
6
|
-
serviceAuthorization: opts.serviceAuthorization,
|
|
7
|
-
forwardedClientIp: opts.forwardedClientIp,
|
|
8
|
-
headers: {
|
|
9
|
-
...(opts.externalDelivery
|
|
10
|
-
? {
|
|
11
|
-
"x-seamless-auth-delivery-mode": "external",
|
|
12
|
-
}
|
|
13
|
-
: {}),
|
|
14
|
-
},
|
|
15
|
-
body: { email: opts.email },
|
|
16
|
-
});
|
|
17
|
-
const data = await up.json();
|
|
18
|
-
if (!up.ok) {
|
|
19
|
-
return {
|
|
20
|
-
status: up.status,
|
|
21
|
-
error: data?.error?.message || "bootstrap_failed",
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
status: up.status,
|
|
26
|
-
body: data?.data,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=bootstrapAdminInvite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapAdminInvite.js","sourceRoot":"","sources":["../../src/handlers/bootstrapAdminInvite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAsB5C,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAiC;IAEjC,MAAM,EAAE,GAAG,MAAM,SAAS,CACxB,GAAG,IAAI,CAAC,aAAa,kCAAkC,EACvD;QACE,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,OAAO,EAAE;YACP,GAAG,CAAC,IAAI,CAAC,gBAAgB;gBACvB,CAAC,CAAC;oBACE,+BAA+B,EAAE,UAAU;iBAC5C;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;KAC5B,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,kBAAkB;SAClD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
|