@seamless-auth/core 0.15.0 → 0.16.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 -2
- package/dist/applyResult.d.ts +11 -1
- package/dist/applyResult.d.ts.map +1 -1
- package/dist/applyResult.js +3 -1
- package/dist/applyResult.js.map +1 -1
- package/dist/getSeamlessUser.d.ts +14 -2
- package/dist/getSeamlessUser.d.ts.map +1 -1
- package/dist/getSeamlessUser.js +28 -10
- package/dist/getSeamlessUser.js.map +1 -1
- package/dist/guards.d.ts +39 -0
- package/dist/guards.d.ts.map +1 -1
- package/dist/guards.js +63 -0
- package/dist/guards.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 +4 -4
- package/dist/handlers/finishLogin.js.map +1 -1
- package/dist/handlers/login.d.ts +13 -5
- package/dist/handlers/login.d.ts.map +1 -1
- package/dist/handlers/login.js +6 -1
- package/dist/handlers/login.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 +4 -4
- package/dist/handlers/oauthHandlers.js.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts +2 -0
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.js +4 -4
- package/dist/handlers/pollMagicLinkConfirmationHandler.js.map +1 -1
- package/dist/handlers/refresh.d.ts +44 -0
- package/dist/handlers/refresh.d.ts.map +1 -0
- package/dist/handlers/refresh.js +70 -0
- package/dist/handlers/refresh.js.map +1 -0
- package/dist/handlers/register.d.ts +2 -0
- package/dist/handlers/register.d.ts.map +1 -1
- package/dist/handlers/register.js +3 -0
- package/dist/handlers/register.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 +4 -4
- package/dist/handlers/switchOrganizationHandler.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 +4 -4
- package/dist/handlers/verifyLoginOtpHandler.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/jwks.d.ts +3 -0
- package/dist/jwks.d.ts.map +1 -0
- package/dist/jwks.js +15 -0
- package/dist/jwks.js.map +1 -0
- package/dist/proxyRequest.d.ts +9 -2
- package/dist/proxyRequest.d.ts.map +1 -1
- package/dist/proxyRequest.js +24 -14
- package/dist/proxyRequest.js.map +1 -1
- package/dist/refreshAccessToken.d.ts +19 -0
- package/dist/refreshAccessToken.d.ts.map +1 -1
- package/dist/refreshAccessToken.js +71 -21
- package/dist/refreshAccessToken.js.map +1 -1
- package/dist/transport.d.ts +20 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +12 -0
- package/dist/transport.js.map +1 -0
- package/dist/upstreamSession.d.ts +19 -0
- package/dist/upstreamSession.d.ts.map +1 -1
- package/dist/upstreamSession.js +20 -0
- package/dist/upstreamSession.js.map +1 -1
- package/dist/verifyAccessToken.d.ts +30 -0
- package/dist/verifyAccessToken.d.ts.map +1 -0
- package/dist/verifyAccessToken.js +44 -0
- package/dist/verifyAccessToken.js.map +1 -0
- package/dist/verifySignedAuthResponse.d.ts.map +1 -1
- package/dist/verifySignedAuthResponse.js +3 -16
- package/dist/verifySignedAuthResponse.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AuthTransport } from "../transport.js";
|
|
2
|
+
import type { ResultFailure } from "../result.js";
|
|
3
|
+
import type { CookiePayload } from "../ensureCookies.js";
|
|
4
|
+
export interface RefreshInput {
|
|
5
|
+
transport: AuthTransport;
|
|
6
|
+
/** The raw `Authorization` header. Bearer transport carries the refresh token here. */
|
|
7
|
+
authorization?: string;
|
|
8
|
+
/** The signed refresh cookie. Cookie transport carries the refresh token here. */
|
|
9
|
+
refreshCookie?: string;
|
|
10
|
+
serviceAuthorization?: string;
|
|
11
|
+
forwardedClientIp?: string;
|
|
12
|
+
forwardedUserAgent?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface RefreshOptions {
|
|
15
|
+
authServerUrl: string;
|
|
16
|
+
audience: string;
|
|
17
|
+
cookieSecret: string;
|
|
18
|
+
serviceSecret: string;
|
|
19
|
+
keyId: string;
|
|
20
|
+
cookieDomain?: string;
|
|
21
|
+
accessCookieName: string;
|
|
22
|
+
refreshCookieName: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RefreshResult extends ResultFailure {
|
|
25
|
+
status: number;
|
|
26
|
+
body?: unknown;
|
|
27
|
+
setCookies?: {
|
|
28
|
+
name: string;
|
|
29
|
+
value: CookiePayload;
|
|
30
|
+
ttl: number;
|
|
31
|
+
domain?: string;
|
|
32
|
+
}[];
|
|
33
|
+
clearCookies?: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Rotates the session on request.
|
|
37
|
+
*
|
|
38
|
+
* Cookie clients rarely need this, since `ensureCookies` refreshes silently on
|
|
39
|
+
* the auth routes, but it gives them an explicit way to do it. Bearer clients
|
|
40
|
+
* depend on it: nothing refreshes for them, so when the access token expires
|
|
41
|
+
* they present the refresh token here and store the pair that comes back.
|
|
42
|
+
*/
|
|
43
|
+
export declare function refreshHandler(input: RefreshInput, opts: RefreshOptions): Promise<RefreshResult>;
|
|
44
|
+
//# sourceMappingURL=refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/handlers/refresh.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CAkExB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { extractBearerToken } from "../verifyAccessToken.js";
|
|
2
|
+
import { refreshAccessToken, refreshBearerSession, } from "../refreshAccessToken.js";
|
|
3
|
+
import { SERVICE_TOKEN_AUDIENCE, SERVICE_TOKEN_ISSUER } from "../apiContract.js";
|
|
4
|
+
import { sessionResult } from "../upstreamSession.js";
|
|
5
|
+
/**
|
|
6
|
+
* Rotates the session on request.
|
|
7
|
+
*
|
|
8
|
+
* Cookie clients rarely need this, since `ensureCookies` refreshes silently on
|
|
9
|
+
* the auth routes, but it gives them an explicit way to do it. Bearer clients
|
|
10
|
+
* depend on it: nothing refreshes for them, so when the access token expires
|
|
11
|
+
* they present the refresh token here and store the pair that comes back.
|
|
12
|
+
*/
|
|
13
|
+
export async function refreshHandler(input, opts) {
|
|
14
|
+
const forwarding = {
|
|
15
|
+
forwardedClientIp: input.forwardedClientIp,
|
|
16
|
+
forwardedUserAgent: input.forwardedUserAgent,
|
|
17
|
+
};
|
|
18
|
+
const session = {
|
|
19
|
+
authServerUrl: opts.authServerUrl,
|
|
20
|
+
audience: opts.audience,
|
|
21
|
+
accessCookieName: opts.accessCookieName,
|
|
22
|
+
refreshCookieName: opts.refreshCookieName,
|
|
23
|
+
cookieDomain: opts.cookieDomain,
|
|
24
|
+
transport: input.transport,
|
|
25
|
+
};
|
|
26
|
+
if (input.transport === "bearer") {
|
|
27
|
+
const refreshToken = extractBearerToken(input.authorization);
|
|
28
|
+
if (!refreshToken) {
|
|
29
|
+
return { status: 401, errorCode: "refresh token required" };
|
|
30
|
+
}
|
|
31
|
+
const rotated = await refreshBearerSession(refreshToken, {
|
|
32
|
+
authServerUrl: opts.authServerUrl,
|
|
33
|
+
serviceAuthorization: input.serviceAuthorization,
|
|
34
|
+
...forwarding,
|
|
35
|
+
});
|
|
36
|
+
if (rotated.status !== 200) {
|
|
37
|
+
return { status: rotated.status, errorBody: rotated.body };
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
status: 200,
|
|
41
|
+
...(await sessionResult(rotated.body, session)),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (!input.refreshCookie) {
|
|
45
|
+
return { status: 401, errorCode: "refresh token required" };
|
|
46
|
+
}
|
|
47
|
+
const rotated = await refreshAccessToken(input.refreshCookie, {
|
|
48
|
+
authServerUrl: opts.authServerUrl,
|
|
49
|
+
cookieSecret: opts.cookieSecret,
|
|
50
|
+
serviceSecret: opts.serviceSecret,
|
|
51
|
+
// The refresh path mints an M2M service token, which the auth API validates
|
|
52
|
+
// against a fixed issuer and audience rather than the adopter-configured one.
|
|
53
|
+
issuer: SERVICE_TOKEN_ISSUER,
|
|
54
|
+
audience: SERVICE_TOKEN_AUDIENCE,
|
|
55
|
+
keyId: opts.keyId,
|
|
56
|
+
...forwarding,
|
|
57
|
+
});
|
|
58
|
+
if (!rotated) {
|
|
59
|
+
return {
|
|
60
|
+
status: 401,
|
|
61
|
+
errorCode: "invalid_refresh_token",
|
|
62
|
+
clearCookies: [opts.accessCookieName, opts.refreshCookieName],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
status: 200,
|
|
67
|
+
...(await sessionResult(rotated, session)),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/handlers/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAgC,MAAM,uBAAuB,CAAC;AAuCpF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAmB,EACnB,IAAoB;IAEpB,MAAM,UAAU,GAAG;QACjB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;IAEF,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAE7D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE;YACvD,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,GAAG,UAAU;SACd,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;QAED,OAAO;YACL,MAAM,EAAE,GAAG;YACX,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,IAA+B,EAAE,OAAO,CAAC,CAAC;SAC3E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE;QAC5D,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,4EAA4E;QAC5E,8EAA8E;QAC9E,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,sBAAsB;QAChC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,UAAU;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG;QACX,GAAG,CAAC,MAAM,aAAa,CAAC,OAAkC,EAAE,OAAO,CAAC,CAAC;KACtE,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ResultFailure } from "../result.js";
|
|
2
2
|
import type { CookiePayload } from "../ensureCookies.js";
|
|
3
|
+
import type { AuthTransport } from "../transport.js";
|
|
3
4
|
export interface RegisterInput {
|
|
4
5
|
body: unknown;
|
|
5
6
|
}
|
|
@@ -11,6 +12,7 @@ export interface RegisterOptions {
|
|
|
11
12
|
forwardedClientIp?: string;
|
|
12
13
|
forwardedUserAgent?: string;
|
|
13
14
|
serviceAuthorization?: string;
|
|
15
|
+
transport?: AuthTransport;
|
|
14
16
|
}
|
|
15
17
|
export interface RegisterResult extends ResultFailure {
|
|
16
18
|
status: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,cAAc,CAAC,CAuCzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/handlers/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA+B9D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAoB,EACpB,IAAqB;IAErB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,wBAAwB,EAAE;QACxE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,GAAG,CAAC,IAAI,CAAC,gBAAgB;YACvB,CAAC,CAAC;gBACE,OAAO,EAAE,yBAAyB;aACnC;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,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,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,IAAI;QACV,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,IAAI,CAAC,sBAAsB;gBACjC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AuthTransport } from "../transport.js";
|
|
1
2
|
import type { ResultFailure } from "../result.js";
|
|
2
3
|
import type { CookiePayload } from "../ensureCookies.js";
|
|
3
4
|
export interface SwitchOrganizationInput {
|
|
@@ -12,6 +13,7 @@ export interface SwitchOrganizationOptions {
|
|
|
12
13
|
audience: string;
|
|
13
14
|
cookieDomain?: string;
|
|
14
15
|
accessCookieName: string;
|
|
16
|
+
transport?: AuthTransport;
|
|
15
17
|
}
|
|
16
18
|
export interface SwitchOrganizationResult extends ResultFailure {
|
|
17
19
|
status: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchOrganizationHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"switchOrganizationHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAsCnC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { authFetch } from "../authFetch.js";
|
|
2
|
-
import {
|
|
2
|
+
import { sessionResult } from "../upstreamSession.js";
|
|
3
3
|
import { readPassthroughFailure } from "../upstreamError.js";
|
|
4
4
|
export async function switchOrganizationHandler(input, opts) {
|
|
5
5
|
const up = await authFetch(`${opts.authServerUrl}/organizations/${encodeURIComponent(input.organizationId)}/switch`, {
|
|
@@ -24,13 +24,13 @@ export async function switchOrganizationHandler(input, opts) {
|
|
|
24
24
|
}
|
|
25
25
|
return {
|
|
26
26
|
status: up.status,
|
|
27
|
-
|
|
28
|
-
setCookies: await issueSessionCookies(data, {
|
|
27
|
+
...(await sessionResult(data, {
|
|
29
28
|
authServerUrl: opts.authServerUrl,
|
|
30
29
|
audience: opts.audience,
|
|
31
30
|
accessCookieName: opts.accessCookieName,
|
|
32
31
|
cookieDomain: opts.cookieDomain,
|
|
33
|
-
|
|
32
|
+
transport: opts.transport,
|
|
33
|
+
})),
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=switchOrganizationHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchOrganizationHandler.js","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"switchOrganizationHandler.js","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AA+B7D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAA8B,EAC9B,IAA+B;IAE/B,MAAM,EAAE,GAAG,MAAM,SAAS,CACxB,GAAG,IAAI,CAAC,aAAa,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EACxF;QACE,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,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,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE;YAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AuthTransport } from "../transport.js";
|
|
1
2
|
import type { ResultFailure } from "../result.js";
|
|
2
3
|
import type { CookiePayload } from "../ensureCookies.js";
|
|
3
4
|
export interface VerifyLoginOtpInput {
|
|
@@ -14,6 +15,7 @@ export interface VerifyLoginOtpOptions {
|
|
|
14
15
|
cookieDomain?: string;
|
|
15
16
|
accessCookieName: string;
|
|
16
17
|
refreshCookieName: string;
|
|
18
|
+
transport?: AuthTransport;
|
|
17
19
|
}
|
|
18
20
|
export interface VerifyLoginOtpResult extends ResultFailure {
|
|
19
21
|
status: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLoginOtpHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifyLoginOtpHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAkDD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAO/B;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAK/B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { authFetch } from "../authFetch.js";
|
|
2
|
-
import {
|
|
2
|
+
import { sessionResult } from "../upstreamSession.js";
|
|
3
3
|
import { readPassthroughFailure } from "../upstreamError.js";
|
|
4
4
|
// Shared by the login and registration OTP verify handlers: POST to the given
|
|
5
5
|
// auth-server path and, when the response carries a session, validate the signed
|
|
@@ -30,14 +30,14 @@ async function verifyOtp(path, input, opts) {
|
|
|
30
30
|
}
|
|
31
31
|
return {
|
|
32
32
|
status: up.status,
|
|
33
|
-
|
|
34
|
-
setCookies: await issueSessionCookies(data, {
|
|
33
|
+
...(await sessionResult(data, {
|
|
35
34
|
authServerUrl: opts.authServerUrl,
|
|
36
35
|
audience: opts.audience,
|
|
37
36
|
accessCookieName: opts.accessCookieName,
|
|
38
37
|
refreshCookieName: opts.refreshCookieName,
|
|
39
38
|
cookieDomain: opts.cookieDomain,
|
|
40
|
-
|
|
39
|
+
transport: opts.transport,
|
|
40
|
+
})),
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
export async function verifyLoginOtpHandler(input, opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLoginOtpHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"verifyLoginOtpHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAiC7D,8EAA8E;AAC9E,iFAAiF;AACjF,gFAAgF;AAChF,kFAAkF;AAClF,yEAAyE;AACzE,KAAK,UAAU,SAAS,CACtB,IAAY,EACZ,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC,CAAC;IAEH,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,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE;YAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO;QACpB,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,4BAA4B,CAAC;IAEnC,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE3E,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from "./ensureCookies.js";
|
|
|
5
5
|
export * from "./verifyCookieJwt.js";
|
|
6
6
|
export * from "./verifyRefreshCookie.js";
|
|
7
7
|
export * from "./verifySignedAuthResponse.js";
|
|
8
|
+
export * from "./verifyAccessToken.js";
|
|
8
9
|
export * from "./refreshAccessToken.js";
|
|
9
10
|
export * from "./getSeamlessUser.js";
|
|
10
11
|
export * from "./logger.js";
|
|
@@ -13,6 +14,7 @@ export * from "./createServiceToken.js";
|
|
|
13
14
|
export * from "./validateSecrets.js";
|
|
14
15
|
export { hasScopedRole, roleGrantsAccess, } from "@seamless-auth/types/role/matching";
|
|
15
16
|
export * from "./apiContract.js";
|
|
17
|
+
export * from "./transport.js";
|
|
16
18
|
export * from "./applyResult.js";
|
|
17
19
|
export * from "./proxyRequest.js";
|
|
18
20
|
export * from "./result.js";
|
|
@@ -23,6 +25,7 @@ export * from "./handlers/finishLogin.js";
|
|
|
23
25
|
export * from "./handlers/register.js";
|
|
24
26
|
export * from "./handlers/finishRegister.js";
|
|
25
27
|
export * from "./handlers/logout.js";
|
|
28
|
+
export * from "./handlers/refresh.js";
|
|
26
29
|
export * from "./handlers/me.js";
|
|
27
30
|
export * from "./handlers/requestOtpHandler.js";
|
|
28
31
|
export * from "./handlers/verifyLoginOtpHandler.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAKrC,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAKrC,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export * from "./ensureCookies.js";
|
|
|
5
5
|
export * from "./verifyCookieJwt.js";
|
|
6
6
|
export * from "./verifyRefreshCookie.js";
|
|
7
7
|
export * from "./verifySignedAuthResponse.js";
|
|
8
|
+
export * from "./verifyAccessToken.js";
|
|
8
9
|
export * from "./refreshAccessToken.js";
|
|
9
10
|
export * from "./getSeamlessUser.js";
|
|
10
11
|
export * from "./logger.js";
|
|
@@ -17,6 +18,7 @@ export * from "./validateSecrets.js";
|
|
|
17
18
|
// is the zod-free one, so importing core does not pull zod or the schema barrel.
|
|
18
19
|
export { hasScopedRole, roleGrantsAccess, } from "@seamless-auth/types/role/matching";
|
|
19
20
|
export * from "./apiContract.js";
|
|
21
|
+
export * from "./transport.js";
|
|
20
22
|
export * from "./applyResult.js";
|
|
21
23
|
export * from "./proxyRequest.js";
|
|
22
24
|
export * from "./result.js";
|
|
@@ -27,6 +29,7 @@ export * from "./handlers/finishLogin.js";
|
|
|
27
29
|
export * from "./handlers/register.js";
|
|
28
30
|
export * from "./handlers/finishRegister.js";
|
|
29
31
|
export * from "./handlers/logout.js";
|
|
32
|
+
export * from "./handlers/refresh.js";
|
|
30
33
|
export * from "./handlers/me.js";
|
|
31
34
|
export * from "./handlers/requestOtpHandler.js";
|
|
32
35
|
export * from "./handlers/verifyLoginOtpHandler.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
|
package/dist/jwks.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwks.d.ts","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAO1C,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,GACpB,UAAU,CAAC,OAAO,kBAAkB,CAAC,CASvC"}
|
package/dist/jwks.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createRemoteJWKSet } from "jose";
|
|
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
|
+
export function getAuthServerJwks(authServerUrl) {
|
|
7
|
+
const jwksUrl = new URL("/.well-known/jwks.json", authServerUrl).toString();
|
|
8
|
+
let jwks = jwksByUrl.get(jwksUrl);
|
|
9
|
+
if (!jwks) {
|
|
10
|
+
jwks = createRemoteJWKSet(new URL(jwksUrl));
|
|
11
|
+
jwksByUrl.set(jwksUrl, jwks);
|
|
12
|
+
}
|
|
13
|
+
return jwks;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=jwks.js.map
|
package/dist/jwks.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwks.js","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE1C,qFAAqF;AACrF,oFAAoF;AACpF,uFAAuF;AACvF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;AAE3E,MAAM,UAAU,iBAAiB,CAC/B,aAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5E,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"}
|
package/dist/proxyRequest.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AppliableResult } from "./applyResult.js";
|
|
2
2
|
import { type AuthFetchOptions } from "./authFetch.js";
|
|
3
|
+
import type { AuthTransport } from "./transport.js";
|
|
3
4
|
/**
|
|
4
5
|
* Query parameters to forward upstream.
|
|
5
6
|
*
|
|
@@ -27,6 +28,9 @@ export interface ProxyIdentityInput {
|
|
|
27
28
|
accessCookieName: string;
|
|
28
29
|
preAuthCookieName: string;
|
|
29
30
|
registrationCookieName: string;
|
|
31
|
+
transport?: AuthTransport;
|
|
32
|
+
/** The raw `Authorization` header, read in bearer transport. */
|
|
33
|
+
authorization?: string;
|
|
30
34
|
}
|
|
31
35
|
export interface ProxyIdentityRejection {
|
|
32
36
|
status: number;
|
|
@@ -38,8 +42,11 @@ export interface ProxyIdentityRejection {
|
|
|
38
42
|
* Checks that a request carries the session a proxied route requires.
|
|
39
43
|
*
|
|
40
44
|
* Returns the rejection to send, or `undefined` when the request may proceed.
|
|
41
|
-
*
|
|
42
|
-
* also has to see the specific cookie for the identity it
|
|
45
|
+
* In cookie transport the cookie payload alone is not enough: it survives a
|
|
46
|
+
* refresh, so the route also has to see the specific cookie for the identity it
|
|
47
|
+
* needs. In bearer transport the client presents the token for the identity
|
|
48
|
+
* itself, and the auth API is the one that checks which kind it is, so the
|
|
49
|
+
* adapter only insists that one was sent.
|
|
43
50
|
*/
|
|
44
51
|
export declare function checkProxyIdentity(input: ProxyIdentityInput): ProxyIdentityRejection | undefined;
|
|
45
52
|
export interface ProxyRequestOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyRequest.d.ts","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxyRequest.d.ts","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAUjD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAiB3D;AAED,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,UAAU,GACjB,MAAM,CAKR;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,GACxB,sBAAsB,GAAG,SAAS,CA0BpC;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,eAAe,CAAC,CAgB1B"}
|
package/dist/proxyRequest.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { authFetch } from "./authFetch.js";
|
|
2
|
+
import { extractBearerToken } from "./verifyAccessToken.js";
|
|
2
3
|
function isScalar(value) {
|
|
3
4
|
return (typeof value === "string" ||
|
|
4
5
|
typeof value === "number" ||
|
|
@@ -33,14 +34,28 @@ export function buildUpstreamUrl(authServerUrl, path, query) {
|
|
|
33
34
|
const qs = buildQueryString(query);
|
|
34
35
|
return qs ? `${base}?${qs}` : base;
|
|
35
36
|
}
|
|
37
|
+
const IDENTITY_REQUIRED = {
|
|
38
|
+
access: "access session required",
|
|
39
|
+
preAuth: "pre-auth session required",
|
|
40
|
+
register: "registration session required",
|
|
41
|
+
};
|
|
36
42
|
/**
|
|
37
43
|
* Checks that a request carries the session a proxied route requires.
|
|
38
44
|
*
|
|
39
45
|
* Returns the rejection to send, or `undefined` when the request may proceed.
|
|
40
|
-
*
|
|
41
|
-
* also has to see the specific cookie for the identity it
|
|
46
|
+
* In cookie transport the cookie payload alone is not enough: it survives a
|
|
47
|
+
* refresh, so the route also has to see the specific cookie for the identity it
|
|
48
|
+
* needs. In bearer transport the client presents the token for the identity
|
|
49
|
+
* itself, and the auth API is the one that checks which kind it is, so the
|
|
50
|
+
* adapter only insists that one was sent.
|
|
42
51
|
*/
|
|
43
52
|
export function checkProxyIdentity(input) {
|
|
53
|
+
const error = IDENTITY_REQUIRED[input.identity];
|
|
54
|
+
if (input.transport === "bearer") {
|
|
55
|
+
return extractBearerToken(input.authorization)
|
|
56
|
+
? undefined
|
|
57
|
+
: { status: 401, errorCode: error };
|
|
58
|
+
}
|
|
44
59
|
if (!input.subject) {
|
|
45
60
|
return {
|
|
46
61
|
status: 401,
|
|
@@ -48,19 +63,14 @@ export function checkProxyIdentity(input) {
|
|
|
48
63
|
warn: "Missing expected cookie payload/sub.",
|
|
49
64
|
};
|
|
50
65
|
}
|
|
51
|
-
const
|
|
52
|
-
access:
|
|
53
|
-
preAuth:
|
|
54
|
-
|
|
55
|
-
error: "pre-auth session required",
|
|
56
|
-
},
|
|
57
|
-
register: {
|
|
58
|
-
name: input.registrationCookieName,
|
|
59
|
-
error: "registration session required",
|
|
60
|
-
},
|
|
66
|
+
const cookieName = {
|
|
67
|
+
access: input.accessCookieName,
|
|
68
|
+
preAuth: input.preAuthCookieName,
|
|
69
|
+
register: input.registrationCookieName,
|
|
61
70
|
};
|
|
62
|
-
|
|
63
|
-
|
|
71
|
+
return input.cookies[cookieName[input.identity]]
|
|
72
|
+
? undefined
|
|
73
|
+
: { status: 401, errorCode: error };
|
|
64
74
|
}
|
|
65
75
|
/**
|
|
66
76
|
* Forwards a request to the auth API and returns its status and body unchanged.
|
package/dist/proxyRequest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyRequest.js","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxyRequest.js","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAY5D,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,CAC3B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,QAAQ,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,aAAqB,EACrB,IAAY,EACZ,KAAkB;IAElB,MAAM,IAAI,GAAG,GAAG,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;IACzE,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAwBD,MAAM,iBAAiB,GAAkC;IACvD,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE,+BAA+B;CAC1C,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAyB;IAEzB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC;YAC5C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO;YACL,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,yBAAyB;YACpC,IAAI,EAAE,sCAAsC;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAkC;QAChD,MAAM,EAAE,KAAK,CAAC,gBAAgB;QAC9B,OAAO,EAAE,KAAK,CAAC,iBAAiB;QAChC,QAAQ,EAAE,KAAK,CAAC,sBAAsB;KACvC,CAAC;IAEF,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAC3D;QACE,MAAM;QACN,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KACjD,CACF,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -21,5 +21,24 @@ type RefreshAccessTokenResult = {
|
|
|
21
21
|
refreshTtl: number;
|
|
22
22
|
};
|
|
23
23
|
export declare function refreshAccessToken(refreshCookie: string, opts: RefreshAccessTokenOptions): Promise<RefreshAccessTokenResult | null>;
|
|
24
|
+
export interface RefreshBearerSessionOptions {
|
|
25
|
+
authServerUrl: string;
|
|
26
|
+
serviceAuthorization?: string;
|
|
27
|
+
forwardedClientIp?: string;
|
|
28
|
+
forwardedUserAgent?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface RefreshBearerSessionResult {
|
|
31
|
+
status: number;
|
|
32
|
+
/** The auth API's body: the rotated session on success, its error otherwise. */
|
|
33
|
+
body: unknown;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Rotates a session for a bearer client, which holds the raw refresh token.
|
|
37
|
+
*
|
|
38
|
+
* Unlike the cookie path this returns the auth API's failure as-is, because the
|
|
39
|
+
* client reads it: `refresh_token_reused` means the chain is gone and the user
|
|
40
|
+
* must sign in again, which is a different outcome from a transient failure.
|
|
41
|
+
*/
|
|
42
|
+
export declare function refreshBearerSession(refreshToken: string, opts: RefreshBearerSessionOptions): Promise<RefreshBearerSessionResult>;
|
|
24
43
|
export {};
|
|
25
44
|
//# sourceMappingURL=refreshAccessToken.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshAccessToken.d.ts","sourceRoot":"","sources":["../src/refreshAccessToken.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"refreshAccessToken.d.ts","sourceRoot":"","sources":["../src/refreshAccessToken.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA6EF,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CA2B1C;AAWD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,0BAA0B,CAAC,CA8BrC"}
|