@xemahq/oidc-session-nest 1.0.1 → 1.2.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 +53 -0
- package/dist/config/oidc-session-config-error.d.ts +4 -0
- package/dist/config/oidc-session-config-error.d.ts.map +1 -0
- package/dist/config/oidc-session-config-error.js +11 -0
- package/dist/config/oidc-session-config-error.js.map +1 -0
- package/dist/config/oidc-session-env.d.ts +4 -0
- package/dist/config/oidc-session-env.d.ts.map +1 -1
- package/dist/config/oidc-session-env.js +64 -6
- package/dist/config/oidc-session-env.js.map +1 -1
- package/dist/config/oidc-session-options.d.ts +11 -4
- package/dist/config/oidc-session-options.d.ts.map +1 -1
- package/dist/config/oidc-session-options.js +63 -20
- package/dist/config/oidc-session-options.js.map +1 -1
- package/dist/config/redirect-origin.d.ts +12 -0
- package/dist/config/redirect-origin.d.ts.map +1 -0
- package/dist/config/redirect-origin.js +113 -0
- package/dist/config/redirect-origin.js.map +1 -0
- package/dist/errors.d.ts +9 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +15 -1
- package/dist/errors.js.map +1 -1
- package/dist/http/request-authority.d.ts +19 -0
- package/dist/http/request-authority.d.ts.map +1 -0
- package/dist/http/request-authority.js +71 -0
- package/dist/http/request-authority.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/nest/navigation-refusal.d.ts +4 -0
- package/dist/nest/navigation-refusal.d.ts.map +1 -0
- package/dist/nest/navigation-refusal.js +10 -0
- package/dist/nest/navigation-refusal.js.map +1 -0
- package/dist/nest/oidc-session-auth.controller.d.ts +4 -0
- package/dist/nest/oidc-session-auth.controller.d.ts.map +1 -1
- package/dist/nest/oidc-session-auth.controller.js +53 -11
- package/dist/nest/oidc-session-auth.controller.js.map +1 -1
- package/dist/nest/oidc-session-context.d.ts +2 -0
- package/dist/nest/oidc-session-context.d.ts.map +1 -1
- package/dist/nest/oidc-session-context.js.map +1 -1
- package/dist/nest/oidc-session.middleware.d.ts +3 -1
- package/dist/nest/oidc-session.middleware.d.ts.map +1 -1
- package/dist/nest/oidc-session.middleware.js +12 -1
- package/dist/nest/oidc-session.middleware.js.map +1 -1
- package/dist/nest/redirect-targets.d.ts +8 -0
- package/dist/nest/redirect-targets.d.ts.map +1 -0
- package/dist/nest/redirect-targets.js +45 -0
- package/dist/nest/redirect-targets.js.map +1 -0
- package/dist/oidc/oidc-client.d.ts +4 -1
- package/dist/oidc/oidc-client.d.ts.map +1 -1
- package/dist/oidc/oidc-client.js +17 -5
- package/dist/oidc/oidc-client.js.map +1 -1
- package/dist/session/session-service.d.ts +2 -1
- package/dist/session/session-service.d.ts.map +1 -1
- package/dist/session/session-service.js +10 -2
- package/dist/session/session-service.js.map +1 -1
- package/dist/session/session-store.d.ts +1 -0
- package/dist/session/session-store.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SessionRefreshContendedError = exports.OidcTokenEndpointFailedError = exports.OidcLoginStateUnknownError = exports.OidcCallbackRejectedError = exports.SessionExpiredError = exports.SessionRequiredError = exports.OidcSessionError = exports.OidcSessionErrorCode = void 0;
|
|
3
|
+
exports.OidcLoginOriginMismatchError = exports.OidcRedirectOriginNotAllowedError = exports.SessionRefreshContendedError = exports.OidcTokenEndpointFailedError = exports.OidcLoginStateUnknownError = exports.OidcCallbackRejectedError = exports.SessionExpiredError = exports.SessionRequiredError = exports.OidcSessionError = exports.OidcSessionErrorCode = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
var OidcSessionErrorCode;
|
|
6
6
|
(function (OidcSessionErrorCode) {
|
|
@@ -10,6 +10,8 @@ var OidcSessionErrorCode;
|
|
|
10
10
|
OidcSessionErrorCode["OidcLoginStateUnknown"] = "OIDC_LOGIN_STATE_UNKNOWN";
|
|
11
11
|
OidcSessionErrorCode["OidcTokenEndpointFailed"] = "OIDC_TOKEN_ENDPOINT_FAILED";
|
|
12
12
|
OidcSessionErrorCode["SessionRefreshContended"] = "SESSION_REFRESH_CONTENDED";
|
|
13
|
+
OidcSessionErrorCode["OidcRedirectOriginNotAllowed"] = "OIDC_REDIRECT_ORIGIN_NOT_ALLOWED";
|
|
14
|
+
OidcSessionErrorCode["OidcLoginOriginMismatch"] = "OIDC_LOGIN_ORIGIN_MISMATCH";
|
|
13
15
|
})(OidcSessionErrorCode || (exports.OidcSessionErrorCode = OidcSessionErrorCode = {}));
|
|
14
16
|
class OidcSessionError extends common_1.HttpException {
|
|
15
17
|
code;
|
|
@@ -57,4 +59,16 @@ class SessionRefreshContendedError extends OidcSessionError {
|
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
exports.SessionRefreshContendedError = SessionRefreshContendedError;
|
|
62
|
+
class OidcRedirectOriginNotAllowedError extends OidcSessionError {
|
|
63
|
+
constructor(detail) {
|
|
64
|
+
super(OidcSessionErrorCode.OidcRedirectOriginNotAllowed, common_1.HttpStatus.BAD_REQUEST, 'Address not approved for sign-in', detail);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.OidcRedirectOriginNotAllowedError = OidcRedirectOriginNotAllowedError;
|
|
68
|
+
class OidcLoginOriginMismatchError extends OidcSessionError {
|
|
69
|
+
constructor(detail = 'This sign-in was started on a different address. Start again on the address you mean to use.') {
|
|
70
|
+
super(OidcSessionErrorCode.OidcLoginOriginMismatch, common_1.HttpStatus.BAD_REQUEST, 'Sign-in finished on a different address', detail);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.OidcLoginOriginMismatchError = OidcLoginOriginMismatchError;
|
|
60
74
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAyBA,2CAA2D;AAM3D,IAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAyBA,2CAA2D;AAM3D,IAAY,oBA8CX;AA9CD,WAAY,oBAAoB;IAE9B,4DAAoC,CAAA;IAOpC,0DAAkC,CAAA;IAElC,uEAA+C,CAAA;IAM/C,0EAAkD,CAAA;IAMlD,8EAAsD,CAAA;IAMtD,6EAAqD,CAAA;IASrD,yFAAiE,CAAA;IAOjE,8EAAsD,CAAA;AACxD,CAAC,EA9CW,oBAAoB,oCAApB,oBAAoB,QA8C/B;AAUD,MAAa,gBAAiB,SAAQ,sBAAa;IACxC,IAAI,CAAuB;IAEpC,YACE,IAA0B,EAC1B,MAAkB,EAClB,KAAa,EACb,MAAc;QAEd,MAAM,IAAI,GAAyB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3D,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAMjB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;CACF;AAnBD,4CAmBC;AAED,MAAa,oBAAqB,SAAQ,gBAAgB;IACxD,YAAY,MAAM,GAAG,6CAA6C;QAChE,KAAK,CACH,oBAAoB,CAAC,eAAe,EACpC,mBAAU,CAAC,YAAY,EACvB,kBAAkB,EAClB,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AATD,oDASC;AAED,MAAa,mBAAoB,SAAQ,gBAAgB;IACvD,YAAY,MAAM,GAAG,mDAAmD;QACtE,KAAK,CACH,oBAAoB,CAAC,cAAc,EACnC,mBAAU,CAAC,YAAY,EACvB,iBAAiB,EACjB,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AATD,kDASC;AAED,MAAa,yBAA0B,SAAQ,gBAAgB;IAC7D,YAAY,MAAc;QACxB,KAAK,CACH,oBAAoB,CAAC,oBAAoB,EACzC,mBAAU,CAAC,WAAW,EACtB,sBAAsB,EACtB,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AATD,8DASC;AAED,MAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,YACE,MAAM,GAAG,6EAA6E;QAEtF,KAAK,CACH,oBAAoB,CAAC,qBAAqB,EAC1C,mBAAU,CAAC,WAAW,EACtB,yBAAyB,EACzB,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AAXD,gEAWC;AAED,MAAa,4BAA6B,SAAQ,gBAAgB;IAChE,YAAY,MAAc;QACxB,KAAK,CACH,oBAAoB,CAAC,uBAAuB,EAC5C,mBAAU,CAAC,WAAW,EACtB,+BAA+B,EAC/B,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AATD,oEASC;AAED,MAAa,4BAA6B,SAAQ,gBAAgB;IAChE,YACE,MAAM,GAAG,4DAA4D;QAErE,KAAK,CACH,oBAAoB,CAAC,uBAAuB,EAC5C,mBAAU,CAAC,mBAAmB,EAC9B,6BAA6B,EAC7B,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AAXD,oEAWC;AAED,MAAa,iCAAkC,SAAQ,gBAAgB;IACrE,YAAY,MAAc;QACxB,KAAK,CACH,oBAAoB,CAAC,4BAA4B,EACjD,mBAAU,CAAC,WAAW,EACtB,kCAAkC,EAClC,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AATD,8EASC;AAED,MAAa,4BAA6B,SAAQ,gBAAgB;IAChE,YACE,MAAM,GAAG,8FAA8F;QAEvG,KAAK,CACH,oBAAoB,CAAC,uBAAuB,EAC5C,mBAAU,CAAC,WAAW,EACtB,yCAAyC,EACzC,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AAXD,oEAWC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BlockList } from 'node:net';
|
|
2
|
+
export interface AuthorityRequestLike {
|
|
3
|
+
headers: Record<string, string | string[] | undefined>;
|
|
4
|
+
socket?: {
|
|
5
|
+
remoteAddress?: string | undefined;
|
|
6
|
+
} | undefined;
|
|
7
|
+
}
|
|
8
|
+
export type RequestAuthority = {
|
|
9
|
+
readonly kind: 'resolved';
|
|
10
|
+
readonly authority: string;
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: 'unresolvable';
|
|
13
|
+
readonly reason: string;
|
|
14
|
+
};
|
|
15
|
+
export type TrustedProxySet = BlockList | null;
|
|
16
|
+
export declare function parseTrustedProxies(entries: readonly string[]): TrustedProxySet;
|
|
17
|
+
export declare function isTrustedPeer(trusted: TrustedProxySet, peer: string | undefined): boolean;
|
|
18
|
+
export declare function resolveRequestAuthority(req: AuthorityRequestLike, trusted: TrustedProxySet): RequestAuthority;
|
|
19
|
+
//# sourceMappingURL=request-authority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-authority.d.ts","sourceRoot":"","sources":["../../src/http/request-authority.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAQ,MAAM,UAAU,CAAC;AAK3C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAEvD,MAAM,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;CAC7D;AAGD,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAG/D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;AAK/C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CA6B/E;AAGD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAWT;AAGD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,oBAAoB,EACzB,OAAO,EAAE,eAAe,GACvB,gBAAgB,CAwBlB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTrustedProxies = parseTrustedProxies;
|
|
4
|
+
exports.isTrustedPeer = isTrustedPeer;
|
|
5
|
+
exports.resolveRequestAuthority = resolveRequestAuthority;
|
|
6
|
+
const node_net_1 = require("node:net");
|
|
7
|
+
const oidc_session_config_error_1 = require("../config/oidc-session-config-error");
|
|
8
|
+
const IPV4_MAPPED = /^::ffff:(\d{1,3}(?:\.\d{1,3}){3})$/iu;
|
|
9
|
+
function parseTrustedProxies(entries) {
|
|
10
|
+
if (entries.length === 0) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const list = new node_net_1.BlockList();
|
|
14
|
+
for (const raw of entries) {
|
|
15
|
+
const entry = raw.trim();
|
|
16
|
+
const [address, prefixText, extra] = entry.split('/');
|
|
17
|
+
const family = (0, node_net_1.isIP)(address ?? '');
|
|
18
|
+
if (address === undefined || family === 0 || extra !== undefined) {
|
|
19
|
+
throw new oidc_session_config_error_1.OidcSessionConfigError(`trusted proxy "${raw}" is not an IP address or CIDR.`);
|
|
20
|
+
}
|
|
21
|
+
const type = family === 4 ? 'ipv4' : 'ipv6';
|
|
22
|
+
if (prefixText === undefined) {
|
|
23
|
+
list.addAddress(address, type);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const prefix = Number(prefixText);
|
|
27
|
+
const max = family === 4 ? 32 : 128;
|
|
28
|
+
if (!/^\d{1,3}$/u.test(prefixText) || prefix > max) {
|
|
29
|
+
throw new oidc_session_config_error_1.OidcSessionConfigError(`trusted proxy "${raw}" has an invalid prefix length.`);
|
|
30
|
+
}
|
|
31
|
+
list.addSubnet(address, prefix, type);
|
|
32
|
+
}
|
|
33
|
+
return list;
|
|
34
|
+
}
|
|
35
|
+
function isTrustedPeer(trusted, peer) {
|
|
36
|
+
if (trusted === null || peer === undefined || peer === '') {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const mapped = IPV4_MAPPED.exec(peer);
|
|
40
|
+
const address = mapped?.[1] ?? peer;
|
|
41
|
+
const family = (0, node_net_1.isIP)(address);
|
|
42
|
+
if (family === 0) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return trusted.check(address, family === 4 ? 'ipv4' : 'ipv6');
|
|
46
|
+
}
|
|
47
|
+
function resolveRequestAuthority(req, trusted) {
|
|
48
|
+
if (isTrustedPeer(trusted, req.socket?.remoteAddress)) {
|
|
49
|
+
const forwarded = req.headers['x-forwarded-host'];
|
|
50
|
+
if (forwarded !== undefined) {
|
|
51
|
+
const values = (Array.isArray(forwarded) ? forwarded : [forwarded])
|
|
52
|
+
.flatMap((value) => value.split(','))
|
|
53
|
+
.map((value) => value.trim())
|
|
54
|
+
.filter((value) => value !== '');
|
|
55
|
+
if (values.length !== 1) {
|
|
56
|
+
return {
|
|
57
|
+
kind: 'unresolvable',
|
|
58
|
+
reason: 'the trusted proxy sent X-Forwarded-Host with ' +
|
|
59
|
+
`${String(values.length)} values; exactly one is required`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return { kind: 'resolved', authority: values[0] ?? '' };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const host = req.headers.host;
|
|
66
|
+
if (typeof host !== 'string' || host.trim() === '') {
|
|
67
|
+
return { kind: 'unresolvable', reason: 'the request carried no Host header' };
|
|
68
|
+
}
|
|
69
|
+
return { kind: 'resolved', authority: host.trim() };
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=request-authority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-authority.js","sourceRoot":"","sources":["../../src/http/request-authority.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { OidcSessionError, OidcSessionErrorCode, OidcCallbackRejectedError, OidcLoginStateUnknownError, OidcTokenEndpointFailedError, SessionExpiredError, SessionRefreshContendedError, SessionRequiredError, type OidcSessionErrorBody, } from './errors';
|
|
2
|
-
export { assertOidcSessionOptions, OidcSessionConfigError, REQUIRED_OIDC_SCOPE, type OidcProviderOptions, type OidcSessionOptions, type SessionCookieOptions, type SessionTtlOptions, } from './config/oidc-session-options';
|
|
3
|
-
export { loadOidcSessionOptionsFromEnv, OIDC_SESSION_OPTIONAL_ENV_VARS, OIDC_SESSION_REQUIRED_ENV_VARS, type EnvReader, } from './config/oidc-session-env';
|
|
1
|
+
export { OidcSessionError, OidcSessionErrorCode, OidcCallbackRejectedError, OidcLoginOriginMismatchError, OidcLoginStateUnknownError, OidcRedirectOriginNotAllowedError, OidcTokenEndpointFailedError, SessionExpiredError, SessionRefreshContendedError, SessionRequiredError, type OidcSessionErrorBody, } from './errors';
|
|
2
|
+
export { assertOidcSessionOptions, OidcSessionConfigError, REQUIRED_OIDC_SCOPE, type OidcProviderOptions, type OidcSessionOptions, type RequestOriginRedirectOptions, type SessionCookieOptions, type SessionTtlOptions, } from './config/oidc-session-options';
|
|
3
|
+
export { loadOidcSessionOptionsFromEnv, OIDC_SESSION_OPTIONAL_ENV_VARS, OIDC_SESSION_REDIRECT_ENV_VARS, OIDC_SESSION_REQUIRED_ENV_VARS, type EnvReader, } from './config/oidc-session-env';
|
|
4
4
|
export { OidcDiscovery, type FetchLike, type OidcDiscoveryDocument, } from './oidc/discovery';
|
|
5
5
|
export { createPkcePair, randomUrlSafeToken, type PkcePair } from './oidc/pkce';
|
|
6
6
|
export { OidcClient, OidcInvalidGrantError, type AuthorizationRequest, type OidcClientDeps, type OidcTokenSet, } from './oidc/oidc-client';
|
|
@@ -10,6 +10,9 @@ export { ioredisScriptClient, RedisSessionStore, type IoredisLike, type RedisScr
|
|
|
10
10
|
export { resolveInitialActiveOrgId, resolveSessionOrgRoles, toSessionActor, type SessionActor as SessionActorShape, } from './session/actor';
|
|
11
11
|
export { SessionService, storeKeyFor, type EstablishedSession, type LiveSession, type ResolvedSession, type SessionServiceDeps, } from './session/session-service';
|
|
12
12
|
export { PROJECT_HEADER_NAME } from './http/headers';
|
|
13
|
+
export { matchRedirectOrigin, parseRedirectOriginAllowlist, parseRedirectOriginPattern, type RedirectOriginPattern, } from './config/redirect-origin';
|
|
14
|
+
export { isTrustedPeer, parseTrustedProxies, resolveRequestAuthority, type AuthorityRequestLike, type RequestAuthority, type TrustedProxySet, } from './http/request-authority';
|
|
15
|
+
export { resolveRedirectTargets, type RedirectTargets, } from './nest/redirect-targets';
|
|
13
16
|
export { readCookie, safeRelativePath, serializeCookie, type SetCookieOptions, } from './http/cookie';
|
|
14
17
|
export { MAX_LOGIN_HINT_LENGTH, safeLoginHint } from './http/login-hint';
|
|
15
18
|
export { currentSession, currentSessionScope, runWithSessionScope, setCurrentProjectId, type OidcSessionScope, } from './nest/oidc-session-context';
|
|
@@ -18,6 +21,7 @@ export { OidcSessionGuard } from './nest/oidc-session.guard';
|
|
|
18
21
|
export { SessionActor } from './nest/session-actor.decorator';
|
|
19
22
|
export { sessionClientTransport, type SessionClientTransport, } from './nest/session-client-transport';
|
|
20
23
|
export { OidcSessionAuthController, type LogoutResponse, type SessionRequestShape, type SessionResponseLike, } from './nest/oidc-session-auth.controller';
|
|
24
|
+
export { navigationErrorLocation, OIDC_NAVIGATION_ERROR_PARAM, } from './nest/navigation-refusal';
|
|
21
25
|
export { LogoutResponseDto } from './nest/dto/logout-response.dto';
|
|
22
26
|
export { SessionActorDto } from './nest/dto/session-actor.dto';
|
|
23
27
|
export { OIDC_SESSION_OPTIONS, OIDC_SESSION_STORE } from './nest/tokens';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,KAAK,oBAAoB,GAC1B,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,EAC9B,KAAK,SAAS,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,aAAa,EACb,KAAK,SAAS,EACd,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEhF,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,cAAc,EACd,KAAK,YAAY,IAAI,iBAAiB,GACvC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,kBAAkB,EAIvB,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACnC,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.OidcSessionGuard = exports.OidcSessionMiddleware = exports.OIDC_SESSION_SCOPE = exports.setCurrentProjectId = exports.runWithSessionScope = exports.currentSessionScope = exports.currentSession = exports.safeLoginHint = exports.MAX_LOGIN_HINT_LENGTH = exports.serializeCookie = exports.safeRelativePath = exports.readCookie = exports.resolveRedirectTargets = exports.resolveRequestAuthority = exports.parseTrustedProxies = exports.isTrustedPeer = exports.parseRedirectOriginPattern = exports.parseRedirectOriginAllowlist = exports.matchRedirectOrigin = exports.PROJECT_HEADER_NAME = exports.storeKeyFor = exports.SessionService = exports.toSessionActor = exports.resolveSessionOrgRoles = exports.resolveInitialActiveOrgId = exports.RedisSessionStore = exports.ioredisScriptClient = exports.InMemorySessionStore = exports.OidcInvalidGrantError = exports.OidcClient = exports.randomUrlSafeToken = exports.createPkcePair = exports.OidcDiscovery = exports.OIDC_SESSION_REQUIRED_ENV_VARS = exports.OIDC_SESSION_REDIRECT_ENV_VARS = exports.OIDC_SESSION_OPTIONAL_ENV_VARS = exports.loadOidcSessionOptionsFromEnv = exports.REQUIRED_OIDC_SCOPE = exports.OidcSessionConfigError = exports.assertOidcSessionOptions = exports.SessionRequiredError = exports.SessionRefreshContendedError = exports.SessionExpiredError = exports.OidcTokenEndpointFailedError = exports.OidcRedirectOriginNotAllowedError = exports.OidcLoginStateUnknownError = exports.OidcLoginOriginMismatchError = exports.OidcCallbackRejectedError = exports.OidcSessionErrorCode = exports.OidcSessionError = void 0;
|
|
4
|
+
exports.OidcSessionModule = exports.OIDC_SESSION_STORE = exports.OIDC_SESSION_OPTIONS = exports.SessionActorDto = exports.LogoutResponseDto = exports.OIDC_NAVIGATION_ERROR_PARAM = exports.navigationErrorLocation = exports.OidcSessionAuthController = exports.sessionClientTransport = exports.SessionActor = void 0;
|
|
4
5
|
var errors_1 = require("./errors");
|
|
5
6
|
Object.defineProperty(exports, "OidcSessionError", { enumerable: true, get: function () { return errors_1.OidcSessionError; } });
|
|
6
7
|
Object.defineProperty(exports, "OidcSessionErrorCode", { enumerable: true, get: function () { return errors_1.OidcSessionErrorCode; } });
|
|
7
8
|
Object.defineProperty(exports, "OidcCallbackRejectedError", { enumerable: true, get: function () { return errors_1.OidcCallbackRejectedError; } });
|
|
9
|
+
Object.defineProperty(exports, "OidcLoginOriginMismatchError", { enumerable: true, get: function () { return errors_1.OidcLoginOriginMismatchError; } });
|
|
8
10
|
Object.defineProperty(exports, "OidcLoginStateUnknownError", { enumerable: true, get: function () { return errors_1.OidcLoginStateUnknownError; } });
|
|
11
|
+
Object.defineProperty(exports, "OidcRedirectOriginNotAllowedError", { enumerable: true, get: function () { return errors_1.OidcRedirectOriginNotAllowedError; } });
|
|
9
12
|
Object.defineProperty(exports, "OidcTokenEndpointFailedError", { enumerable: true, get: function () { return errors_1.OidcTokenEndpointFailedError; } });
|
|
10
13
|
Object.defineProperty(exports, "SessionExpiredError", { enumerable: true, get: function () { return errors_1.SessionExpiredError; } });
|
|
11
14
|
Object.defineProperty(exports, "SessionRefreshContendedError", { enumerable: true, get: function () { return errors_1.SessionRefreshContendedError; } });
|
|
@@ -17,6 +20,7 @@ Object.defineProperty(exports, "REQUIRED_OIDC_SCOPE", { enumerable: true, get: f
|
|
|
17
20
|
var oidc_session_env_1 = require("./config/oidc-session-env");
|
|
18
21
|
Object.defineProperty(exports, "loadOidcSessionOptionsFromEnv", { enumerable: true, get: function () { return oidc_session_env_1.loadOidcSessionOptionsFromEnv; } });
|
|
19
22
|
Object.defineProperty(exports, "OIDC_SESSION_OPTIONAL_ENV_VARS", { enumerable: true, get: function () { return oidc_session_env_1.OIDC_SESSION_OPTIONAL_ENV_VARS; } });
|
|
23
|
+
Object.defineProperty(exports, "OIDC_SESSION_REDIRECT_ENV_VARS", { enumerable: true, get: function () { return oidc_session_env_1.OIDC_SESSION_REDIRECT_ENV_VARS; } });
|
|
20
24
|
Object.defineProperty(exports, "OIDC_SESSION_REQUIRED_ENV_VARS", { enumerable: true, get: function () { return oidc_session_env_1.OIDC_SESSION_REQUIRED_ENV_VARS; } });
|
|
21
25
|
var discovery_1 = require("./oidc/discovery");
|
|
22
26
|
Object.defineProperty(exports, "OidcDiscovery", { enumerable: true, get: function () { return discovery_1.OidcDiscovery; } });
|
|
@@ -40,6 +44,16 @@ Object.defineProperty(exports, "SessionService", { enumerable: true, get: functi
|
|
|
40
44
|
Object.defineProperty(exports, "storeKeyFor", { enumerable: true, get: function () { return session_service_1.storeKeyFor; } });
|
|
41
45
|
var headers_1 = require("./http/headers");
|
|
42
46
|
Object.defineProperty(exports, "PROJECT_HEADER_NAME", { enumerable: true, get: function () { return headers_1.PROJECT_HEADER_NAME; } });
|
|
47
|
+
var redirect_origin_1 = require("./config/redirect-origin");
|
|
48
|
+
Object.defineProperty(exports, "matchRedirectOrigin", { enumerable: true, get: function () { return redirect_origin_1.matchRedirectOrigin; } });
|
|
49
|
+
Object.defineProperty(exports, "parseRedirectOriginAllowlist", { enumerable: true, get: function () { return redirect_origin_1.parseRedirectOriginAllowlist; } });
|
|
50
|
+
Object.defineProperty(exports, "parseRedirectOriginPattern", { enumerable: true, get: function () { return redirect_origin_1.parseRedirectOriginPattern; } });
|
|
51
|
+
var request_authority_1 = require("./http/request-authority");
|
|
52
|
+
Object.defineProperty(exports, "isTrustedPeer", { enumerable: true, get: function () { return request_authority_1.isTrustedPeer; } });
|
|
53
|
+
Object.defineProperty(exports, "parseTrustedProxies", { enumerable: true, get: function () { return request_authority_1.parseTrustedProxies; } });
|
|
54
|
+
Object.defineProperty(exports, "resolveRequestAuthority", { enumerable: true, get: function () { return request_authority_1.resolveRequestAuthority; } });
|
|
55
|
+
var redirect_targets_1 = require("./nest/redirect-targets");
|
|
56
|
+
Object.defineProperty(exports, "resolveRedirectTargets", { enumerable: true, get: function () { return redirect_targets_1.resolveRedirectTargets; } });
|
|
43
57
|
var cookie_1 = require("./http/cookie");
|
|
44
58
|
Object.defineProperty(exports, "readCookie", { enumerable: true, get: function () { return cookie_1.readCookie; } });
|
|
45
59
|
Object.defineProperty(exports, "safeRelativePath", { enumerable: true, get: function () { return cookie_1.safeRelativePath; } });
|
|
@@ -63,6 +77,9 @@ var session_client_transport_1 = require("./nest/session-client-transport");
|
|
|
63
77
|
Object.defineProperty(exports, "sessionClientTransport", { enumerable: true, get: function () { return session_client_transport_1.sessionClientTransport; } });
|
|
64
78
|
var oidc_session_auth_controller_1 = require("./nest/oidc-session-auth.controller");
|
|
65
79
|
Object.defineProperty(exports, "OidcSessionAuthController", { enumerable: true, get: function () { return oidc_session_auth_controller_1.OidcSessionAuthController; } });
|
|
80
|
+
var navigation_refusal_1 = require("./nest/navigation-refusal");
|
|
81
|
+
Object.defineProperty(exports, "navigationErrorLocation", { enumerable: true, get: function () { return navigation_refusal_1.navigationErrorLocation; } });
|
|
82
|
+
Object.defineProperty(exports, "OIDC_NAVIGATION_ERROR_PARAM", { enumerable: true, get: function () { return navigation_refusal_1.OIDC_NAVIGATION_ERROR_PARAM; } });
|
|
66
83
|
var logout_response_dto_1 = require("./nest/dto/logout-response.dto");
|
|
67
84
|
Object.defineProperty(exports, "LogoutResponseDto", { enumerable: true, get: function () { return logout_response_dto_1.LogoutResponseDto; } });
|
|
68
85
|
var session_actor_dto_1 = require("./nest/dto/session-actor.dto");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAWA,mCAYkB;AAXhB,0GAAA,gBAAgB,OAAA;AAChB,8GAAA,oBAAoB,OAAA;AACpB,mHAAA,yBAAyB,OAAA;AACzB,sHAAA,4BAA4B,OAAA;AAC5B,oHAAA,0BAA0B,OAAA;AAC1B,2HAAA,iCAAiC,OAAA;AACjC,sHAAA,4BAA4B,OAAA;AAC5B,6GAAA,mBAAmB,OAAA;AACnB,sHAAA,4BAA4B,OAAA;AAC5B,8GAAA,oBAAoB,OAAA;AAItB,sEASuC;AARrC,gIAAA,wBAAwB,OAAA;AACxB,8HAAA,sBAAsB,OAAA;AACtB,2HAAA,mBAAmB,OAAA;AAQrB,8DAMmC;AALjC,iIAAA,6BAA6B,OAAA;AAC7B,kIAAA,8BAA8B,OAAA;AAC9B,kIAAA,8BAA8B,OAAA;AAC9B,kIAAA,8BAA8B,OAAA;AAIhC,8CAI0B;AAHxB,0GAAA,aAAa,OAAA;AAKf,oCAAgF;AAAvE,sGAAA,cAAc,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAE3C,kDAM4B;AAL1B,yGAAA,UAAU,OAAA;AACV,oHAAA,qBAAqB,OAAA;AAavB,6EAG2C;AAFzC,+HAAA,oBAAoB,OAAA;AAItB,qEAMuC;AALrC,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AAMnB,yCAKyB;AAJvB,kHAAA,yBAAyB,OAAA;AACzB,+GAAA,sBAAsB,OAAA;AACtB,uGAAA,cAAc,OAAA;AAIhB,6DAOmC;AANjC,iHAAA,cAAc,OAAA;AACd,8GAAA,WAAW,OAAA;AAOb,0CAAqD;AAA5C,8GAAA,mBAAmB,OAAA;AAE5B,4DAKkC;AAJhC,sHAAA,mBAAmB,OAAA;AACnB,+HAAA,4BAA4B,OAAA;AAC5B,6HAAA,0BAA0B,OAAA;AAI5B,8DAOkC;AANhC,kHAAA,aAAa,OAAA;AACb,wHAAA,mBAAmB,OAAA;AACnB,4HAAA,uBAAuB,OAAA;AAMzB,4DAGiC;AAF/B,0HAAA,sBAAsB,OAAA;AAIxB,wCAKuB;AAJrB,oGAAA,UAAU,OAAA;AACV,0GAAA,gBAAgB,OAAA;AAChB,yGAAA,eAAe,OAAA;AAIjB,gDAAyE;AAAhE,mHAAA,qBAAqB,OAAA;AAAE,2GAAA,aAAa,OAAA;AAE7C,oEAMqC;AALnC,sHAAA,cAAc,OAAA;AACd,2HAAA,mBAAmB,OAAA;AACnB,2HAAA,mBAAmB,OAAA;AACnB,2HAAA,mBAAmB,OAAA;AAIrB,0EAQwC;AAPtC,6HAAA,kBAAkB,OAAA;AAClB,gIAAA,qBAAqB,OAAA;AAQvB,gEAA6D;AAApD,sHAAA,gBAAgB,OAAA;AAEzB,0EAA8D;AAArD,uHAAA,YAAY,OAAA;AAErB,4EAGyC;AAFvC,kIAAA,sBAAsB,OAAA;AAIxB,oFAK6C;AAJ3C,yIAAA,yBAAyB,OAAA;AAM3B,gEAGmC;AAFjC,6HAAA,uBAAuB,OAAA;AACvB,iIAAA,2BAA2B,OAAA;AAG7B,sEAAmE;AAA1D,wHAAA,iBAAiB,OAAA;AAC1B,kEAA+D;AAAtD,oHAAA,eAAe,OAAA;AAExB,wCAAyE;AAAhE,8GAAA,oBAAoB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAEjD,kEAIoC;AAHlC,wHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-refusal.d.ts","sourceRoot":"","sources":["../../src/nest/navigation-refusal.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAOtD,eAAO,MAAM,2BAA2B,UAAU,CAAC;AAOnD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,oBAAoB,GACzB,MAAM,CAGR"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OIDC_NAVIGATION_ERROR_PARAM = void 0;
|
|
4
|
+
exports.navigationErrorLocation = navigationErrorLocation;
|
|
5
|
+
exports.OIDC_NAVIGATION_ERROR_PARAM = 'error';
|
|
6
|
+
function navigationErrorLocation(path, code) {
|
|
7
|
+
const query = new URLSearchParams({ [exports.OIDC_NAVIGATION_ERROR_PARAM]: code });
|
|
8
|
+
return `${path}?${query.toString()}`;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=navigation-refusal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-refusal.js","sourceRoot":"","sources":["../../src/nest/navigation-refusal.ts"],"names":[],"mappings":";;;AA6BA,0DAMC;AAbY,QAAA,2BAA2B,GAAG,OAAO,CAAC;AAOnD,SAAgB,uBAAuB,CACrC,IAAY,EACZ,IAA0B;IAE1B,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,mCAA2B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -19,11 +19,15 @@ export declare class OidcSessionAuthController {
|
|
|
19
19
|
private readonly sessions;
|
|
20
20
|
private readonly client;
|
|
21
21
|
private readonly options;
|
|
22
|
+
private readonly logger;
|
|
22
23
|
constructor(sessions: SessionService, client: OidcClient, options: OidcSessionOptions);
|
|
23
24
|
login(returnTo: string | undefined, loginHint: string | undefined, res: SessionResponseLike): Promise<void>;
|
|
24
25
|
callback(code: string | undefined, state: string | undefined, error: string | undefined, errorDescription: string | undefined, res: SessionResponseLike): Promise<void>;
|
|
26
|
+
private completeCallback;
|
|
25
27
|
logout(res: SessionResponseLike): Promise<void>;
|
|
26
28
|
me(_req: SessionRequestShape, res: SessionResponseLike): void;
|
|
29
|
+
private exchangeCode;
|
|
30
|
+
private asNavigation;
|
|
27
31
|
private sessionCookie;
|
|
28
32
|
private clearedCookie;
|
|
29
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-session-auth.controller.d.ts","sourceRoot":"","sources":["../../src/nest/oidc-session-auth.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oidc-session-auth.controller.d.ts","sourceRoot":"","sources":["../../src/nest/oidc-session-auth.controller.ts"],"names":[],"mappings":"AAsDA,OAAO,EAAE,UAAU,EAAyB,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAK5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIzE,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAGD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACxD;AAGD,MAAM,WAAW,cAAc;IAQ7B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAgBD,qBAEa,yBAAyB;IAIlC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAIvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;gBAGlD,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,UAAU,EAIlB,OAAO,EAAE,kBAAkB;IA2CxC,KAAK,CACU,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC1C,GAAG,EAAE,mBAAmB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAwCV,QAAQ,CACG,IAAI,EAAE,MAAM,GAAG,SAAS,EACvB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,MAAM,GAAG,SAAS,EACb,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACzD,GAAG,EAAE,mBAAmB,GAC9B,OAAO,CAAC,IAAI,CAAC;YAMF,gBAAgB;IAqFxB,MAAM,CAAQ,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD5D,EAAE,CAAQ,IAAI,EAAE,mBAAmB,EAAS,GAAG,EAAE,mBAAmB,GAAG,IAAI;YA4B7D,YAAY;YAuBZ,YAAY;IAuB1B,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;CAWtB"}
|
|
@@ -11,14 +11,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
+
var OidcSessionAuthController_1;
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
16
|
exports.OidcSessionAuthController = void 0;
|
|
16
17
|
const common_1 = require("@nestjs/common");
|
|
17
18
|
const swagger_1 = require("@nestjs/swagger");
|
|
18
19
|
const xema_decorators_1 = require("@xemahq/xema-decorators");
|
|
19
20
|
const errors_1 = require("../errors");
|
|
21
|
+
const navigation_refusal_1 = require("./navigation-refusal");
|
|
20
22
|
const oidc_session_context_1 = require("./oidc-session-context");
|
|
21
23
|
const oidc_session_guard_1 = require("./oidc-session.guard");
|
|
24
|
+
const redirect_targets_1 = require("./redirect-targets");
|
|
22
25
|
const tokens_1 = require("./tokens");
|
|
23
26
|
const cookie_1 = require("../http/cookie");
|
|
24
27
|
const login_hint_1 = require("../http/login-hint");
|
|
@@ -30,26 +33,34 @@ const session_actor_dto_1 = require("./dto/session-actor.dto");
|
|
|
30
33
|
const HTTP_FOUND = 302;
|
|
31
34
|
const HTTP_OK = 200;
|
|
32
35
|
const HTTP_UNAUTHORIZED = 401;
|
|
33
|
-
let OidcSessionAuthController = class OidcSessionAuthController {
|
|
36
|
+
let OidcSessionAuthController = OidcSessionAuthController_1 = class OidcSessionAuthController {
|
|
34
37
|
sessions;
|
|
35
38
|
client;
|
|
36
39
|
options;
|
|
40
|
+
logger = new common_1.Logger(OidcSessionAuthController_1.name);
|
|
37
41
|
constructor(sessions, client, options) {
|
|
38
42
|
this.sessions = sessions;
|
|
39
43
|
this.client = client;
|
|
40
44
|
this.options = options;
|
|
41
45
|
}
|
|
42
46
|
async login(returnTo, loginHint, res) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
await this.asNavigation('login', res, async () => {
|
|
48
|
+
const { redirectUri } = (0, redirect_targets_1.resolveRedirectTargets)(this.options.oidc, (0, oidc_session_context_1.currentSessionScope)());
|
|
49
|
+
const pkce = (0, pkce_1.createPkcePair)();
|
|
50
|
+
const { authorizationUrl } = await this.sessions.beginAuthorization({
|
|
51
|
+
pkceVerifier: pkce.verifier,
|
|
52
|
+
codeChallenge: pkce.challenge,
|
|
53
|
+
returnTo: (0, cookie_1.safeRelativePath)(returnTo),
|
|
54
|
+
loginHint: (0, login_hint_1.safeLoginHint)(loginHint),
|
|
55
|
+
redirectUri,
|
|
56
|
+
});
|
|
57
|
+
res.status(HTTP_FOUND).redirect(authorizationUrl);
|
|
49
58
|
});
|
|
50
|
-
res.status(HTTP_FOUND).redirect(authorizationUrl);
|
|
51
59
|
}
|
|
52
60
|
async callback(code, state, error, errorDescription, res) {
|
|
61
|
+
await this.asNavigation('callback', res, () => this.completeCallback(code, state, error, errorDescription, res));
|
|
62
|
+
}
|
|
63
|
+
async completeCallback(code, state, error, errorDescription, res) {
|
|
53
64
|
if (error !== undefined && error !== '') {
|
|
54
65
|
throw new errors_1.OidcCallbackRejectedError(`The identity provider refused the sign-in (${error}` +
|
|
55
66
|
`${errorDescription === undefined ? '' : `: ${errorDescription}`}).`);
|
|
@@ -60,14 +71,19 @@ let OidcSessionAuthController = class OidcSessionAuthController {
|
|
|
60
71
|
if (code === undefined || code === '') {
|
|
61
72
|
throw new errors_1.OidcCallbackRejectedError('The callback carried no authorization code.');
|
|
62
73
|
}
|
|
74
|
+
const { redirectUri } = (0, redirect_targets_1.resolveRedirectTargets)(this.options.oidc, (0, oidc_session_context_1.currentSessionScope)());
|
|
63
75
|
const pending = await this.sessions.takePendingAuthorization(state);
|
|
64
76
|
if (pending === null) {
|
|
65
77
|
throw new errors_1.OidcLoginStateUnknownError();
|
|
66
78
|
}
|
|
67
|
-
|
|
79
|
+
if (pending.redirectUri !== redirectUri) {
|
|
80
|
+
throw new errors_1.OidcLoginOriginMismatchError();
|
|
81
|
+
}
|
|
82
|
+
const tokenSet = await this.exchangeCode({
|
|
68
83
|
code,
|
|
69
84
|
codeVerifier: pending.codeVerifier,
|
|
70
85
|
nonce: pending.nonce,
|
|
86
|
+
redirectUri: pending.redirectUri,
|
|
71
87
|
});
|
|
72
88
|
const scope = (0, oidc_session_context_1.currentSessionScope)();
|
|
73
89
|
if (scope !== undefined && scope.session !== null) {
|
|
@@ -79,7 +95,8 @@ let OidcSessionAuthController = class OidcSessionAuthController {
|
|
|
79
95
|
}
|
|
80
96
|
async logout(res) {
|
|
81
97
|
const scope = (0, oidc_session_context_1.currentSessionScope)();
|
|
82
|
-
const
|
|
98
|
+
const { postLogoutRedirectUri } = (0, redirect_targets_1.resolveRedirectTargets)(this.options.oidc, scope);
|
|
99
|
+
const endSessionUrl = await this.sessions.endSession(scope?.session ?? null, postLogoutRedirectUri);
|
|
83
100
|
res.setHeader('Set-Cookie', this.clearedCookie());
|
|
84
101
|
const body = { endSessionUrl };
|
|
85
102
|
res.status(HTTP_OK).json(body);
|
|
@@ -98,6 +115,31 @@ let OidcSessionAuthController = class OidcSessionAuthController {
|
|
|
98
115
|
res.status(HTTP_OK).type('application/json');
|
|
99
116
|
res.send('null');
|
|
100
117
|
}
|
|
118
|
+
async exchangeCode(input) {
|
|
119
|
+
try {
|
|
120
|
+
return await this.client.exchangeCode(input);
|
|
121
|
+
}
|
|
122
|
+
catch (caught) {
|
|
123
|
+
if (caught instanceof oidc_client_1.OidcInvalidGrantError) {
|
|
124
|
+
throw new errors_1.OidcCallbackRejectedError(caught.message);
|
|
125
|
+
}
|
|
126
|
+
throw caught;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async asNavigation(route, res, work) {
|
|
130
|
+
try {
|
|
131
|
+
await work();
|
|
132
|
+
}
|
|
133
|
+
catch (caught) {
|
|
134
|
+
const path = this.options.navigationErrorPath;
|
|
135
|
+
if (path === undefined || !(caught instanceof errors_1.OidcSessionError)) {
|
|
136
|
+
throw caught;
|
|
137
|
+
}
|
|
138
|
+
this.logger.warn(`GET ${route} refused (${caught.code}, HTTP ${String(caught.getStatus())}): ` +
|
|
139
|
+
`${caught.message} — redirecting to the navigation-error path.`);
|
|
140
|
+
res.status(HTTP_FOUND).redirect((0, navigation_refusal_1.navigationErrorLocation)(path, caught.code));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
101
143
|
sessionCookie(value) {
|
|
102
144
|
const { cookie, ttl } = this.options;
|
|
103
145
|
return (0, cookie_1.serializeCookie)(cookie.name, value, {
|
|
@@ -216,7 +258,7 @@ __decorate([
|
|
|
216
258
|
__metadata("design:paramtypes", [Object, Object]),
|
|
217
259
|
__metadata("design:returntype", void 0)
|
|
218
260
|
], OidcSessionAuthController.prototype, "me", null);
|
|
219
|
-
exports.OidcSessionAuthController = OidcSessionAuthController = __decorate([
|
|
261
|
+
exports.OidcSessionAuthController = OidcSessionAuthController = OidcSessionAuthController_1 = __decorate([
|
|
220
262
|
(0, swagger_1.ApiExtraModels)(session_actor_dto_1.SessionActorDto),
|
|
221
263
|
(0, common_1.Controller)('auth'),
|
|
222
264
|
__param(2, (0, common_1.Inject)(tokens_1.OIDC_SESSION_OPTIONS)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-session-auth.controller.js","sourceRoot":"","sources":["../../src/nest/oidc-session-auth.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oidc-session-auth.controller.js","sourceRoot":"","sources":["../../src/nest/oidc-session-auth.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { RequestAuthority } from '../http/request-authority';
|
|
1
2
|
import type { LiveSession } from '../session/session-service';
|
|
2
3
|
export interface OidcSessionScope {
|
|
3
4
|
readonly session: LiveSession | null;
|
|
4
5
|
readonly expired: boolean;
|
|
5
6
|
projectId: string | null;
|
|
7
|
+
readonly requestAuthority?: RequestAuthority;
|
|
6
8
|
}
|
|
7
9
|
export declare function runWithSessionScope<T>(scope: OidcSessionScope, fn: () => T): T;
|
|
8
10
|
export declare function currentSessionScope(): OidcSessionScope | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-session-context.d.ts","sourceRoot":"","sources":["../../src/nest/oidc-session-context.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAOrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAS1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"oidc-session-context.d.ts","sourceRoot":"","sources":["../../src/nest/oidc-session-context.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAOrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAS1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAOzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAuBD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAEH;AAGD,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,SAAS,CAElE;AAUD,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AASD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAUlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-session-context.js","sourceRoot":"","sources":["../../src/nest/oidc-session-context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"oidc-session-context.js","sourceRoot":"","sources":["../../src/nest/oidc-session-context.ts"],"names":[],"mappings":";;AA0EA,kDAKC;AAGD,kDAEC;AAUD,wCAEC;AASD,kDAUC;AAhGD,uDAAqD;AAkCrD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AAMhF,SAAS,OAAO;IACd,MAAM,MAAM,GAAG,UAAoC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,oCAAiB,EAAoB,CAAC;IAC1D,MAAM,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAMD,SAAgB,mBAAmB,CACjC,KAAuB,EACvB,EAAW;IAEX,OAAO,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAGD,SAAgB,mBAAmB;IACjC,OAAO,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAUD,SAAgB,cAAc;IAC5B,OAAO,mBAAmB,EAAE,EAAE,OAAO,IAAI,IAAI,CAAC;AAChD,CAAC;AASD,SAAgB,mBAAmB,CAAC,SAAwB;IAC1D,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,uEAAuE;YACrE,sEAAsE;YACtE,6BAA6B,CAChC,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type NestMiddleware } from '@nestjs/common';
|
|
2
2
|
import { type OidcSessionScope } from './oidc-session-context';
|
|
3
|
+
import { type AuthorityRequestLike } from '../http/request-authority';
|
|
3
4
|
import { SessionService } from '../session/session-service';
|
|
4
5
|
import type { OidcSessionOptions } from '../config/oidc-session-options';
|
|
5
|
-
export interface SessionRequestLike {
|
|
6
|
+
export interface SessionRequestLike extends AuthorityRequestLike {
|
|
6
7
|
headers: Record<string, string | string[] | undefined>;
|
|
7
8
|
}
|
|
8
9
|
export declare const OIDC_SESSION_SCOPE: unique symbol;
|
|
@@ -13,6 +14,7 @@ export declare class OidcSessionMiddleware implements NestMiddleware {
|
|
|
13
14
|
private readonly sessions;
|
|
14
15
|
private readonly options;
|
|
15
16
|
constructor(sessions: SessionService, options: OidcSessionOptions);
|
|
17
|
+
private readonly trustedProxies;
|
|
16
18
|
use(req: SessionRequestLike, _res: unknown, next: (error?: unknown) => void): Promise<void>;
|
|
17
19
|
private resolveScope;
|
|
18
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-session.middleware.d.ts","sourceRoot":"","sources":["../../src/nest/oidc-session.middleware.ts"],"names":[],"mappings":"AAaA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AASzE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"oidc-session.middleware.d.ts","sourceRoot":"","sources":["../../src/nest/oidc-session.middleware.ts"],"names":[],"mappings":"AAaA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAGL,KAAK,oBAAoB,EAG1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AASzE,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACxD;AAUD,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAEvC,CAAC;AAGF,MAAM,WAAW,mBAAmB;IAClC,CAAC,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,CAAC;CACzC;AAED,qBACa,qBAAsB,YAAW,cAAc;IAExD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAIzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAJP,QAAQ,EAAE,cAAc,EAIxB,OAAO,EAAE,kBAAkB;IAU9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAEvD,GAAG,CACP,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC;YAYF,YAAY;CAwB3B"}
|
|
@@ -17,6 +17,7 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const oidc_session_context_1 = require("./oidc-session-context");
|
|
18
18
|
const tokens_1 = require("./tokens");
|
|
19
19
|
const cookie_1 = require("../http/cookie");
|
|
20
|
+
const request_authority_1 = require("../http/request-authority");
|
|
20
21
|
const session_service_1 = require("../session/session-service");
|
|
21
22
|
exports.OIDC_SESSION_SCOPE = Symbol.for('@xemahq/oidc-session-nest:request-scope');
|
|
22
23
|
let OidcSessionMiddleware = class OidcSessionMiddleware {
|
|
@@ -25,7 +26,13 @@ let OidcSessionMiddleware = class OidcSessionMiddleware {
|
|
|
25
26
|
constructor(sessions, options) {
|
|
26
27
|
this.sessions = sessions;
|
|
27
28
|
this.options = options;
|
|
29
|
+
const perOrigin = options.oidc.redirectFromRequestOrigin;
|
|
30
|
+
this.trustedProxies =
|
|
31
|
+
perOrigin === undefined
|
|
32
|
+
? undefined
|
|
33
|
+
: (0, request_authority_1.parseTrustedProxies)(perOrigin.trustedProxies ?? []);
|
|
28
34
|
}
|
|
35
|
+
trustedProxies;
|
|
29
36
|
async use(req, _res, next) {
|
|
30
37
|
const scope = await this.resolveScope(req);
|
|
31
38
|
req[exports.OIDC_SESSION_SCOPE] = scope;
|
|
@@ -34,17 +41,21 @@ let OidcSessionMiddleware = class OidcSessionMiddleware {
|
|
|
34
41
|
});
|
|
35
42
|
}
|
|
36
43
|
async resolveScope(req) {
|
|
44
|
+
const authority = this.trustedProxies === undefined
|
|
45
|
+
? {}
|
|
46
|
+
: { requestAuthority: (0, request_authority_1.resolveRequestAuthority)(req, this.trustedProxies) };
|
|
37
47
|
const header = req.headers.cookie;
|
|
38
48
|
const cookieHeader = Array.isArray(header) ? header.join('; ') : header;
|
|
39
49
|
const cookieValue = (0, cookie_1.readCookie)(cookieHeader, this.options.cookie.name);
|
|
40
50
|
if (cookieValue === null) {
|
|
41
|
-
return { session: null, expired: false, projectId: null };
|
|
51
|
+
return { session: null, expired: false, projectId: null, ...authority };
|
|
42
52
|
}
|
|
43
53
|
const resolved = await this.sessions.resolveSession(cookieValue);
|
|
44
54
|
return {
|
|
45
55
|
session: resolved.session,
|
|
46
56
|
expired: resolved.expired,
|
|
47
57
|
projectId: null,
|
|
58
|
+
...authority,
|
|
48
59
|
};
|
|
49
60
|
}
|
|
50
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-session.middleware.js","sourceRoot":"","sources":["../../src/nest/oidc-session.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAaA,2CAAyE;AAEzE,iEAGgC;AAChC,qCAAgD;AAChD,2CAA4C;AAC5C,gEAA4D;AAuB/C,QAAA,kBAAkB,GAAkB,MAAM,CAAC,GAAG,CACzD,yCAAyC,CAC1C,CAAC;AAQK,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAEb;IAIA;IALnB,YACmB,QAAwB,EAIxB,OAA2B;QAJ3B,aAAQ,GAAR,QAAQ,CAAgB;QAIxB,YAAO,GAAP,OAAO,CAAoB;
|
|
1
|
+
{"version":3,"file":"oidc-session.middleware.js","sourceRoot":"","sources":["../../src/nest/oidc-session.middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAaA,2CAAyE;AAEzE,iEAGgC;AAChC,qCAAgD;AAChD,2CAA4C;AAC5C,iEAMmC;AACnC,gEAA4D;AAuB/C,QAAA,kBAAkB,GAAkB,MAAM,CAAC,GAAG,CACzD,yCAAyC,CAC1C,CAAC;AAQK,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAEb;IAIA;IALnB,YACmB,QAAwB,EAIxB,OAA2B;QAJ3B,aAAQ,GAAR,QAAQ,CAAgB;QAIxB,YAAO,GAAP,OAAO,CAAoB;QAE5C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACzD,IAAI,CAAC,cAAc;YACjB,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAA,uCAAmB,EAAC,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAGgB,cAAc,CAA8B;IAE7D,KAAK,CAAC,GAAG,CACP,GAAuB,EACvB,IAAa,EACb,IAA+B;QAE/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAK1C,GAAgD,CAAC,0BAAkB,CAAC,GAAG,KAAK,CAAC;QAC9E,IAAA,0CAAmB,EAAC,KAAK,EAAE,GAAG,EAAE;YAC9B,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,GAAuB;QAKvB,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,KAAK,SAAS;YAC/B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAA,2CAAuB,EAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,WAAW,GAAG,IAAA,mBAAU,EAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,IAAI;YACf,GAAG,SAAS;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AA1DY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,6BAAoB,CAAC,CAAA;qCAHF,gCAAc;GAFhC,qBAAqB,CA0DjC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { OidcSessionScope } from './oidc-session-context';
|
|
2
|
+
import type { OidcProviderOptions } from '../config/oidc-session-options';
|
|
3
|
+
export interface RedirectTargets {
|
|
4
|
+
readonly redirectUri: string;
|
|
5
|
+
readonly postLogoutRedirectUri: string | null;
|
|
6
|
+
}
|
|
7
|
+
export declare function resolveRedirectTargets(oidc: OidcProviderOptions, scope: OidcSessionScope | undefined): RedirectTargets;
|
|
8
|
+
//# sourceMappingURL=redirect-targets.d.ts.map
|