@boxyhq/saml-jackson 1.8.2 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controller/admin.d.ts +7 -3
- package/dist/controller/admin.js +17 -1
- package/dist/controller/admin.js.map +1 -1
- package/dist/controller/connection/saml.js +11 -8
- package/dist/controller/connection/saml.js.map +1 -1
- package/dist/controller/oauth.d.ts +3 -1
- package/dist/controller/oauth.js +321 -211
- package/dist/controller/oauth.js.map +1 -1
- package/dist/controller/saml-handler.d.ts +1 -0
- package/dist/controller/saml-handler.js +7 -4
- package/dist/controller/saml-handler.js.map +1 -1
- package/dist/controller/utils.d.ts +2 -1
- package/dist/controller/utils.js +1 -0
- package/dist/controller/utils.js.map +1 -1
- package/dist/directory-sync/DirectoryUsers.js +10 -9
- package/dist/directory-sync/DirectoryUsers.js.map +1 -1
- package/dist/directory-sync/types.d.ts +11 -0
- package/dist/directory-sync/utils.d.ts +6 -9
- package/dist/directory-sync/utils.js +35 -28
- package/dist/directory-sync/utils.js.map +1 -1
- package/dist/ee/branding/index.d.ts +15 -0
- package/dist/ee/branding/index.js +49 -0
- package/dist/ee/branding/index.js.map +1 -0
- package/dist/ee/federated-saml/app.d.ts +12 -5
- package/dist/ee/federated-saml/app.js +19 -12
- package/dist/ee/federated-saml/app.js.map +1 -1
- package/dist/ee/federated-saml/index.d.ts +3 -2
- package/dist/ee/federated-saml/index.js +2 -2
- package/dist/ee/federated-saml/index.js.map +1 -1
- package/dist/ee/federated-saml/sso.d.ts +4 -1
- package/dist/ee/federated-saml/sso.js +70 -45
- package/dist/ee/federated-saml/sso.js.map +1 -1
- package/dist/ee/federated-saml/types.d.ts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/saml/lib.d.ts +1 -0
- package/dist/saml/lib.js +3 -2
- package/dist/saml/lib.js.map +1 -1
- package/dist/saml-tracer/index.d.ts +14 -0
- package/dist/saml-tracer/index.js +87 -0
- package/dist/saml-tracer/index.js.map +1 -0
- package/dist/saml-tracer/types.d.ts +31 -0
- package/dist/saml-tracer/types.js +3 -0
- package/dist/saml-tracer/types.js.map +1 -0
- package/dist/typings.d.ts +16 -0
- package/dist/typings.js +1 -0
- package/dist/typings.js.map +1 -1
- package/package.json +10 -9
@@ -21,7 +21,7 @@ class App {
|
|
21
21
|
this.opts = opts;
|
22
22
|
}
|
23
23
|
// Create a new SAML Federation app for the tenant and product
|
24
|
-
create({ name, tenant, product, acsUrl, entityId
|
24
|
+
create({ name, tenant, product, acsUrl, entityId }) {
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
26
26
|
if (!tenant || !product || !acsUrl || !entityId || !name) {
|
27
27
|
throw new error_1.JacksonError('Missing required parameters. Required parameters are: name, tenant, product, acsUrl, entityId', 400);
|
@@ -35,12 +35,15 @@ class App {
|
|
35
35
|
product,
|
36
36
|
acsUrl,
|
37
37
|
entityId,
|
38
|
+
logoUrl: null,
|
39
|
+
faviconUrl: null,
|
40
|
+
primaryColor: null,
|
38
41
|
};
|
39
42
|
yield this.store.put(id, app, {
|
40
43
|
name: utils_2.IndexNames.EntityID,
|
41
44
|
value: entityId,
|
42
45
|
});
|
43
|
-
return
|
46
|
+
return app;
|
44
47
|
});
|
45
48
|
}
|
46
49
|
// Get an app by tenant and product
|
@@ -53,7 +56,7 @@ class App {
|
|
53
56
|
if (!app) {
|
54
57
|
throw new error_1.JacksonError('SAML Federation app not found', 404);
|
55
58
|
}
|
56
|
-
return
|
59
|
+
return app;
|
57
60
|
});
|
58
61
|
}
|
59
62
|
// Get the app by SP EntityId
|
@@ -69,26 +72,30 @@ class App {
|
|
69
72
|
if (!apps || apps.length === 0) {
|
70
73
|
throw new error_1.JacksonError('SAML Federation app not found', 404);
|
71
74
|
}
|
72
|
-
return
|
75
|
+
return apps[0];
|
73
76
|
});
|
74
77
|
}
|
75
78
|
// Update the app
|
76
|
-
update(id,
|
79
|
+
update(id, params) {
|
77
80
|
return __awaiter(this, void 0, void 0, function* () {
|
78
|
-
|
79
|
-
|
81
|
+
const { acsUrl, entityId, name, logoUrl, faviconUrl, primaryColor } = params;
|
82
|
+
if (!id) {
|
83
|
+
throw new error_1.JacksonError('Missing the app id', 400);
|
84
|
+
}
|
85
|
+
if (!acsUrl && !entityId && !name && !logoUrl && !faviconUrl && !primaryColor) {
|
86
|
+
throw new error_1.JacksonError('Missing required parameters. Please provide at least one of the following parameters: acsUrl, entityId, name, logoUrl, faviconUrl, primaryColor', 400);
|
80
87
|
}
|
81
88
|
const app = yield this.get(id);
|
82
|
-
const updatedApp = Object.assign(Object.assign({}, app), { name: name || app.name, acsUrl: acsUrl || app.acsUrl, entityId: entityId || app.entityId });
|
89
|
+
const updatedApp = Object.assign(Object.assign({}, app), { name: name || app.name, acsUrl: acsUrl || app.acsUrl, entityId: entityId || app.entityId, logoUrl: logoUrl || app.logoUrl, faviconUrl: faviconUrl || app.faviconUrl, primaryColor: primaryColor || app.primaryColor });
|
83
90
|
yield this.store.put(id, updatedApp);
|
84
|
-
return
|
91
|
+
return updatedApp;
|
85
92
|
});
|
86
93
|
}
|
87
94
|
// Get all apps
|
88
|
-
getAll({ pageOffset, pageLimit
|
95
|
+
getAll({ pageOffset, pageLimit }) {
|
89
96
|
return __awaiter(this, void 0, void 0, function* () {
|
90
|
-
const apps =
|
91
|
-
return apps
|
97
|
+
const apps = yield this.store.getAll(pageOffset, pageLimit);
|
98
|
+
return apps;
|
92
99
|
});
|
93
100
|
}
|
94
101
|
// Delete the app
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/ee/federated-saml/app.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/ee/federated-saml/app.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { SSO } from './sso';
|
2
2
|
import { App } from './app';
|
3
|
-
import type { JacksonOption } from '../../typings';
|
4
|
-
declare const SAMLFederation: ({ db, opts }: {
|
3
|
+
import type { JacksonOption, SAMLTracerInstance } from '../../typings';
|
4
|
+
declare const SAMLFederation: ({ db, opts, samlTracer, }: {
|
5
5
|
db: any;
|
6
6
|
opts: JacksonOption;
|
7
|
+
samlTracer: SAMLTracerInstance;
|
7
8
|
}) => Promise<{
|
8
9
|
app: App;
|
9
10
|
sso: SSO;
|
@@ -27,7 +27,7 @@ const sso_1 = require("./sso");
|
|
27
27
|
const app_1 = require("./app");
|
28
28
|
const saml_handler_1 = require("../../controller/saml-handler");
|
29
29
|
// This is the main entry point for the SAML Federation module
|
30
|
-
const SAMLFederation = ({ db, opts }) => __awaiter(void 0, void 0, void 0, function* () {
|
30
|
+
const SAMLFederation = ({ db, opts, samlTracer, }) => __awaiter(void 0, void 0, void 0, function* () {
|
31
31
|
const appStore = db.store('samlfed:apps');
|
32
32
|
const sessionStore = db.store('oauth:session', opts.db.ttl);
|
33
33
|
const connectionStore = db.store('saml:config');
|
@@ -37,7 +37,7 @@ const SAMLFederation = ({ db, opts }) => __awaiter(void 0, void 0, void 0, funct
|
|
37
37
|
opts,
|
38
38
|
});
|
39
39
|
const app = new app_1.App({ store: appStore, opts });
|
40
|
-
const sso = new sso_1.SSO({ app, samlHandler });
|
40
|
+
const sso = new sso_1.SSO({ app, samlHandler, samlTracer });
|
41
41
|
const response = {
|
42
42
|
app,
|
43
43
|
sso,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ee/federated-saml/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA4B;AAC5B,+BAA4B;AAE5B,gEAA4D;AAE5D,8DAA8D;AAC9D,MAAM,cAAc,GAAG,CAAO,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ee/federated-saml/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA4B;AAC5B,+BAA4B;AAE5B,gEAA4D;AAE5D,8DAA8D;AAC9D,MAAM,cAAc,GAAG,CAAO,EAC5B,EAAE,EACF,IAAI,EACJ,UAAU,GAKX,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC;QAClC,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,YAAY;QACrB,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG;QACf,GAAG;QACH,GAAG;KACJ,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAA,CAAC;AAEF,kBAAe,cAAc,CAAC;AAE9B,0CAAwB;AAExB,wBAAwB;AACxB,qGAAqG;AACrG,oDAAoD;AACpD,2FAA2F;AAC3F,iEAAiE;AACjE,8FAA8F;AAC9F,4HAA4H"}
|
@@ -1,11 +1,14 @@
|
|
1
1
|
import { App } from './app';
|
2
2
|
import { SAMLHandler } from '../../controller/saml-handler';
|
3
|
+
import type { SAMLTracerInstance } from '../../typings';
|
3
4
|
export declare class SSO {
|
4
5
|
private app;
|
5
6
|
private samlHandler;
|
6
|
-
|
7
|
+
private samlTracer;
|
8
|
+
constructor({ app, samlHandler, samlTracer, }: {
|
7
9
|
app: App;
|
8
10
|
samlHandler: SAMLHandler;
|
11
|
+
samlTracer: SAMLTracerInstance;
|
9
12
|
});
|
10
13
|
getAuthorizeUrl: ({ request, relayState, idp_hint, }: {
|
11
14
|
request: string;
|
@@ -16,60 +16,85 @@ exports.SSO = void 0;
|
|
16
16
|
const saml20_1 = __importDefault(require("@boxyhq/saml20"));
|
17
17
|
const error_1 = require("../../controller/error");
|
18
18
|
const lib_1 = require("../../saml/lib");
|
19
|
+
const utils_1 = require("../../controller/utils");
|
19
20
|
class SSO {
|
20
|
-
constructor({ app, samlHandler }) {
|
21
|
+
constructor({ app, samlHandler, samlTracer, }) {
|
21
22
|
// Accept the SAML Request from Service Provider, and create a new SAML Request to be sent to Identity Provider
|
22
23
|
this.getAuthorizeUrl = ({ request, relayState, idp_hint, }) => __awaiter(this, void 0, void 0, function* () {
|
23
|
-
const { id, acsUrl, entityId, publicKey, providerName } = yield (0, lib_1.extractSAMLRequestAttributes)(request);
|
24
|
-
// Verify the request if it is signed
|
25
|
-
if (publicKey && !saml20_1.default.hasValidSignature(request, publicKey, null)) {
|
26
|
-
throw new error_1.JacksonError('Invalid SAML Request signature.', 400);
|
27
|
-
}
|
28
|
-
const app = yield this.app.getByEntityId(entityId);
|
29
|
-
if (app.acsUrl !== acsUrl) {
|
30
|
-
throw new error_1.JacksonError("Assertion Consumer Service URL doesn't match.", 400);
|
31
|
-
}
|
32
|
-
const response = yield this.samlHandler.resolveConnection({
|
33
|
-
tenant: app.tenant,
|
34
|
-
product: app.product,
|
35
|
-
idp_hint,
|
36
|
-
authFlow: 'saml',
|
37
|
-
originalParams: {
|
38
|
-
RelayState: relayState,
|
39
|
-
SAMLRequest: request,
|
40
|
-
},
|
41
|
-
});
|
42
|
-
// If there is a redirect URL, then we need to redirect to that URL
|
43
|
-
if ('redirectUrl' in response) {
|
44
|
-
return {
|
45
|
-
redirectUrl: response.redirectUrl,
|
46
|
-
};
|
47
|
-
}
|
48
24
|
let connection;
|
49
|
-
|
50
|
-
|
51
|
-
|
25
|
+
let id, acsUrl, entityId, publicKey, providerName, decodedRequest, app;
|
26
|
+
try {
|
27
|
+
const parsedSAMLRequest = yield (0, lib_1.extractSAMLRequestAttributes)(request);
|
28
|
+
id = parsedSAMLRequest.id;
|
29
|
+
acsUrl = parsedSAMLRequest.acsUrl;
|
30
|
+
entityId = parsedSAMLRequest.entityId;
|
31
|
+
publicKey = parsedSAMLRequest.publicKey;
|
32
|
+
providerName = parsedSAMLRequest.providerName;
|
33
|
+
decodedRequest = parsedSAMLRequest.decodedRequest;
|
34
|
+
// Verify the request if it is signed
|
35
|
+
if (publicKey && !saml20_1.default.hasValidSignature(request, publicKey, null)) {
|
36
|
+
throw new error_1.JacksonError('Invalid SAML Request signature.', 400);
|
37
|
+
}
|
38
|
+
app = yield this.app.getByEntityId(entityId);
|
39
|
+
if (app.acsUrl !== acsUrl) {
|
40
|
+
throw new error_1.JacksonError("Assertion Consumer Service URL doesn't match.", 400);
|
41
|
+
}
|
42
|
+
const response = yield this.samlHandler.resolveConnection({
|
43
|
+
tenant: app.tenant,
|
44
|
+
product: app.product,
|
45
|
+
idp_hint,
|
46
|
+
authFlow: 'saml',
|
47
|
+
originalParams: {
|
48
|
+
RelayState: relayState,
|
49
|
+
SAMLRequest: request,
|
50
|
+
},
|
51
|
+
});
|
52
|
+
// If there is a redirect URL, then we need to redirect to that URL
|
53
|
+
if ('redirectUrl' in response) {
|
54
|
+
return {
|
55
|
+
redirectUrl: response.redirectUrl,
|
56
|
+
};
|
57
|
+
}
|
58
|
+
// If there is a connection, use that connection
|
59
|
+
if ('connection' in response && 'idpMetadata' in response.connection) {
|
60
|
+
connection = response.connection;
|
61
|
+
}
|
62
|
+
if (!connection) {
|
63
|
+
throw new error_1.JacksonError('No SAML connection found.', 404);
|
64
|
+
}
|
65
|
+
return yield this.samlHandler.createSAMLRequest({
|
66
|
+
connection,
|
67
|
+
requestParams: {
|
68
|
+
id,
|
69
|
+
acsUrl,
|
70
|
+
entityId,
|
71
|
+
publicKey,
|
72
|
+
providerName,
|
73
|
+
relayState,
|
74
|
+
},
|
75
|
+
});
|
52
76
|
}
|
53
|
-
|
54
|
-
|
77
|
+
catch (err) {
|
78
|
+
const error_description = (0, utils_1.getErrorMessage)(err);
|
79
|
+
this.samlTracer.saveTrace({
|
80
|
+
error: error_description,
|
81
|
+
context: {
|
82
|
+
tenant: (app === null || app === void 0 ? void 0 : app.tenant) || '',
|
83
|
+
product: (app === null || app === void 0 ? void 0 : app.product) || '',
|
84
|
+
clientID: (connection === null || connection === void 0 ? void 0 : connection.clientID) || '',
|
85
|
+
isSAMLFederated: true,
|
86
|
+
providerName,
|
87
|
+
acsUrl,
|
88
|
+
entityId,
|
89
|
+
samlRequest: decodedRequest,
|
90
|
+
},
|
91
|
+
});
|
92
|
+
throw err;
|
55
93
|
}
|
56
|
-
const { redirectUrl } = yield this.samlHandler.createSAMLRequest({
|
57
|
-
connection,
|
58
|
-
requestParams: {
|
59
|
-
id,
|
60
|
-
acsUrl,
|
61
|
-
entityId,
|
62
|
-
publicKey,
|
63
|
-
providerName,
|
64
|
-
relayState,
|
65
|
-
},
|
66
|
-
});
|
67
|
-
return {
|
68
|
-
redirectUrl,
|
69
|
-
};
|
70
94
|
});
|
71
95
|
this.app = app;
|
72
96
|
this.samlHandler = samlHandler;
|
97
|
+
this.samlTracer = samlTracer;
|
73
98
|
}
|
74
99
|
}
|
75
100
|
exports.SSO = SSO;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sso.js","sourceRoot":"","sources":["../../../src/ee/federated-saml/sso.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAAkC;AAGlC,kDAAsD;AAGtD,wCAA8D;
|
1
|
+
{"version":3,"file":"sso.js","sourceRoot":"","sources":["../../../src/ee/federated-saml/sso.ts"],"names":[],"mappings":"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"}
|
@@ -7,6 +7,9 @@ export type SAMLFederationApp = {
|
|
7
7
|
product: string;
|
8
8
|
acsUrl: string;
|
9
9
|
entityId: string;
|
10
|
+
logoUrl: string | null;
|
11
|
+
faviconUrl: string | null;
|
12
|
+
primaryColor: string | null;
|
10
13
|
};
|
11
14
|
export type SAMLFederationAppWithMetadata = SAMLFederationApp & {
|
12
15
|
metadata: {
|
package/dist/index.d.ts
CHANGED
@@ -9,6 +9,7 @@ import { SPSAMLConfig } from './controller/sp-config';
|
|
9
9
|
import { SetupLinkController } from './controller/setup-link';
|
10
10
|
import { type ISAMLFederationController } from './ee/federated-saml';
|
11
11
|
import checkLicense from './ee/common/checkLicense';
|
12
|
+
import { BrandingController } from './ee/branding';
|
12
13
|
export declare const controllers: (opts: JacksonOption) => Promise<{
|
13
14
|
apiController: ConnectionAPIController;
|
14
15
|
connectionAPIController: ConnectionAPIController;
|
@@ -21,6 +22,7 @@ export declare const controllers: (opts: JacksonOption) => Promise<{
|
|
21
22
|
oidcDiscoveryController: OidcDiscoveryController;
|
22
23
|
spConfig: SPSAMLConfig;
|
23
24
|
samlFederatedController: ISAMLFederationController;
|
25
|
+
brandingController: IBrandingController | null;
|
24
26
|
checkLicense: () => Promise<boolean>;
|
25
27
|
}>;
|
26
28
|
export default controllers;
|
@@ -28,3 +30,4 @@ export * from './typings';
|
|
28
30
|
export * from './ee/federated-saml/types';
|
29
31
|
export type SAMLJackson = Awaited<ReturnType<typeof controllers>>;
|
30
32
|
export type ISetupLinkController = InstanceType<typeof SetupLinkController>;
|
33
|
+
export type IBrandingController = InstanceType<typeof BrandingController>;
|
package/dist/index.js
CHANGED
@@ -56,6 +56,8 @@ const analytics_1 = require("./controller/analytics");
|
|
56
56
|
const x509 = __importStar(require("./saml/x509"));
|
57
57
|
const federated_saml_1 = __importDefault(require("./ee/federated-saml"));
|
58
58
|
const checkLicense_1 = __importDefault(require("./ee/common/checkLicense"));
|
59
|
+
const branding_1 = require("./ee/branding");
|
60
|
+
const saml_tracer_1 = __importDefault(require("./saml-tracer"));
|
59
61
|
const defaultOpts = (opts) => {
|
60
62
|
const newOpts = Object.assign({}, opts);
|
61
63
|
if (!newOpts.externalUrl) {
|
@@ -89,8 +91,10 @@ const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
91
|
const healthCheckStore = db.store('_health:check');
|
90
92
|
const setupLinkStore = db.store('setup:link');
|
91
93
|
const certificateStore = db.store('x509:certificates');
|
94
|
+
const settingsStore = db.store('portal:settings');
|
95
|
+
const samlTracer = new saml_tracer_1.default({ db });
|
92
96
|
const connectionAPIController = new api_1.ConnectionAPIController({ connectionStore, opts });
|
93
|
-
const adminController = new admin_1.AdminController({ connectionStore });
|
97
|
+
const adminController = new admin_1.AdminController({ connectionStore, samlTracer });
|
94
98
|
const healthCheckController = new health_check_1.HealthCheckController({ healthCheckStore });
|
95
99
|
yield healthCheckController.init();
|
96
100
|
const setupLinkController = new setup_link_1.SetupLinkController({ setupLinkStore });
|
@@ -107,6 +111,7 @@ const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
111
|
sessionStore,
|
108
112
|
codeStore,
|
109
113
|
tokenStore,
|
114
|
+
samlTracer,
|
110
115
|
opts,
|
111
116
|
});
|
112
117
|
const logoutController = new logout_1.LogoutController({
|
@@ -117,7 +122,11 @@ const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
117
122
|
const oidcDiscoveryController = new oidc_discovery_1.OidcDiscoveryController({ opts });
|
118
123
|
const spConfig = new sp_config_1.SPSAMLConfig(opts);
|
119
124
|
const directorySyncController = yield (0, directory_sync_1.default)({ db, opts });
|
120
|
-
|
125
|
+
// Enterprise Features
|
126
|
+
const samlFederatedController = yield (0, federated_saml_1.default)({ db, opts, samlTracer });
|
127
|
+
const brandingController = (yield (0, checkLicense_1.default)(opts.boxyhqLicenseKey))
|
128
|
+
? new branding_1.BrandingController({ store: settingsStore })
|
129
|
+
: null;
|
121
130
|
// write pre-loaded connections if present
|
122
131
|
const preLoadedConnection = opts.preLoadedConnection || opts.preLoadedConfig;
|
123
132
|
if (preLoadedConnection && preLoadedConnection.length > 0) {
|
@@ -146,6 +155,7 @@ const controllers = (opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
146
155
|
directorySyncController,
|
147
156
|
oidcDiscoveryController,
|
148
157
|
samlFederatedController,
|
158
|
+
brandingController,
|
149
159
|
checkLicense: () => {
|
150
160
|
return (0, checkLicense_1.default)(opts.boxyhqLicenseKey);
|
151
161
|
},
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iDAAyB;AACzB,+DAAuC;AACvC,sEAA8C;AAC9C,qDAA8D;AAC9D,8CAAqD;AACrD,0CAA2D;AAC3D,8CAAqD;AACrD,4DAAkE;AAClE,gDAAuD;AACvD,sEAAiD;AACjD,gEAAsE;AACtE,sDAAsD;AACtD,wDAA8D;AAC9D,sDAA6D;AAC7D,kDAAoC;AACpC,yEAAwF;AACxF,4EAAoD;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/saml/lib.d.ts
CHANGED
@@ -6,6 +6,7 @@ export declare const extractSAMLRequestAttributes: (samlRequest: string) => Prom
|
|
6
6
|
entityId: string;
|
7
7
|
publicKey: string;
|
8
8
|
providerName: string;
|
9
|
+
decodedRequest: string;
|
9
10
|
}>;
|
10
11
|
export declare const createMetadataXML: ({ ssoUrl, entityId, x509cert, }: {
|
11
12
|
ssoUrl: string;
|
package/dist/saml/lib.js
CHANGED
@@ -61,8 +61,8 @@ const extractSAMLResponseAttributes = (decodedResponse, validateOpts) => __await
|
|
61
61
|
});
|
62
62
|
exports.extractSAMLResponseAttributes = extractSAMLResponseAttributes;
|
63
63
|
const extractSAMLRequestAttributes = (samlRequest) => __awaiter(void 0, void 0, void 0, function* () {
|
64
|
-
const
|
65
|
-
const result = yield parseXML(
|
64
|
+
const decodedRequest = yield (0, exports.decodeBase64)(samlRequest, true);
|
65
|
+
const result = yield parseXML(decodedRequest);
|
66
66
|
const publicKey = result['samlp:AuthnRequest']['Signature']
|
67
67
|
? result['samlp:AuthnRequest']['Signature'][0]['KeyInfo'][0]['X509Data'][0]['X509Certificate'][0]
|
68
68
|
: null;
|
@@ -83,6 +83,7 @@ const extractSAMLRequestAttributes = (samlRequest) => __awaiter(void 0, void 0,
|
|
83
83
|
entityId,
|
84
84
|
publicKey,
|
85
85
|
providerName,
|
86
|
+
decodedRequest,
|
86
87
|
};
|
87
88
|
});
|
88
89
|
exports.extractSAMLRequestAttributes = extractSAMLRequestAttributes;
|
package/dist/saml/lib.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/saml/lib.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,oDAA4B;AAC5B,+BAAkC;AAClC,+BAAiC;AACjC,4DAAkC;AAClC,4DAAoC;AAEpC,qDAAuC;AACvC,4DAAoC;AAEpC,yDAAyD;AAClD,MAAM,6BAA6B,GAAG,CAC3C,eAAuB,EACvB,YAA4B,EAC5B,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,gBAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAEtE,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;QACnC,oHAAoH;QACpH,UAAU,CAAC,MAAM,GAAG,gBAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAElD,+FAA+F;QAC/F,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE;YACpD,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClG;KACF;IAED,wHAAwH;IACxH,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnE,OAAO,UAAU,CAAC;AACpB,CAAC,CAAA,CAAC;AApBW,QAAA,6BAA6B,iCAoBxC;AAEK,MAAM,4BAA4B,GAAG,CAAO,WAAmB,EAAE,EAAE;IACxE,MAAM,
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/saml/lib.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { Storable } from '../typings';
|
2
|
+
import type { SAMLTrace, Trace } from './types';
|
3
|
+
declare class SAMLTracer {
|
4
|
+
tracerStore: Storable;
|
5
|
+
constructor({ db }: {
|
6
|
+
db: any;
|
7
|
+
});
|
8
|
+
saveTrace(payload: SAMLTrace): Promise<string | undefined>;
|
9
|
+
getByTraceId(traceId: string): Promise<Trace>;
|
10
|
+
getAllTraces(pageOffset?: number, pageLimit?: number): Promise<Trace[]>;
|
11
|
+
/** Cleans up stale traces older than 1 week */
|
12
|
+
cleanUpStaleTraces(): Promise<void>;
|
13
|
+
}
|
14
|
+
export default SAMLTracer;
|
@@ -0,0 +1,87 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
const error_code_mnemonic_1 = require("@boxyhq/error-code-mnemonic");
|
13
|
+
const utils_1 = require("../controller/utils");
|
14
|
+
const utils_2 = require("../db/utils");
|
15
|
+
const INTERVAL_1_WEEK_MS = 7 * 24 * 60 * 60 * 1000;
|
16
|
+
const INTERVAL_1_DAY_MS = 24 * 60 * 60 * 1000;
|
17
|
+
class SAMLTracer {
|
18
|
+
constructor({ db }) {
|
19
|
+
this.tracerStore = db.store('saml:tracer');
|
20
|
+
// Clean up stale traces at the start
|
21
|
+
this.cleanUpStaleTraces();
|
22
|
+
// Set timer to run every day
|
23
|
+
setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
24
|
+
this.cleanUpStaleTraces();
|
25
|
+
}), INTERVAL_1_DAY_MS);
|
26
|
+
}
|
27
|
+
saveTrace(payload) {
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
29
|
+
try {
|
30
|
+
const { context } = payload;
|
31
|
+
// Friendly trace id
|
32
|
+
const traceId = yield (0, error_code_mnemonic_1.generateMnemonic)();
|
33
|
+
// If timestamp present in payload use that value, else generate the current timestamp
|
34
|
+
const timestamp = typeof payload.timestamp === 'number' ? payload.timestamp : Date.now();
|
35
|
+
const traceValue = Object.assign(Object.assign({}, payload), { traceId, timestamp });
|
36
|
+
const { tenant, product, clientID } = context;
|
37
|
+
const indices = [
|
38
|
+
{
|
39
|
+
name: utils_1.IndexNames.TenantProduct,
|
40
|
+
value: (0, utils_2.keyFromParts)(tenant, product),
|
41
|
+
filterLogic: ({ tenant, product }) => !!(tenant && product),
|
42
|
+
},
|
43
|
+
{
|
44
|
+
name: utils_1.IndexNames.SSOClientID,
|
45
|
+
value: clientID,
|
46
|
+
filterLogic: ({ clientID }) => !!clientID,
|
47
|
+
},
|
48
|
+
]
|
49
|
+
.filter(({ filterLogic }) => filterLogic(context))
|
50
|
+
.map(({ name, value }) => ({ name, value }));
|
51
|
+
yield this.tracerStore.put(traceId, traceValue, ...indices);
|
52
|
+
return traceId;
|
53
|
+
}
|
54
|
+
catch (err) {
|
55
|
+
console.error(`Failed to save trace`, err);
|
56
|
+
}
|
57
|
+
});
|
58
|
+
}
|
59
|
+
getByTraceId(traceId) {
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
61
|
+
return (yield this.tracerStore.get(traceId));
|
62
|
+
});
|
63
|
+
}
|
64
|
+
getAllTraces(pageOffset, pageLimit) {
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
66
|
+
return (yield this.tracerStore.getAll(pageOffset || 0, pageLimit || 0));
|
67
|
+
});
|
68
|
+
}
|
69
|
+
/** Cleans up stale traces older than 1 week */
|
70
|
+
cleanUpStaleTraces() {
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
72
|
+
let staleTraces = [];
|
73
|
+
for (let pageOffset = 0;; pageOffset++) {
|
74
|
+
const page = yield this.getAllTraces(pageOffset, 50);
|
75
|
+
if (page.length === 0) {
|
76
|
+
break;
|
77
|
+
}
|
78
|
+
staleTraces = staleTraces.concat(page.filter(({ timestamp }) => Date.now() - timestamp > INTERVAL_1_WEEK_MS));
|
79
|
+
}
|
80
|
+
for (let i = 0; i < staleTraces.length; i++) {
|
81
|
+
yield this.tracerStore.delete(staleTraces[i].traceId);
|
82
|
+
}
|
83
|
+
});
|
84
|
+
}
|
85
|
+
}
|
86
|
+
exports.default = SAMLTracer;
|
87
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/saml-tracer/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { SAMLProfile } from '@boxyhq/saml20/dist/typings';
|
2
|
+
import SAMLTracer from '.';
|
3
|
+
export interface Trace {
|
4
|
+
traceId: string;
|
5
|
+
timestamp: number;
|
6
|
+
error: string;
|
7
|
+
context: {
|
8
|
+
[key: string]: unknown;
|
9
|
+
};
|
10
|
+
}
|
11
|
+
export interface SAMLTrace extends Omit<Trace, 'traceId' | 'timestamp'> {
|
12
|
+
timestamp?: number /** Can be passed in from outside else will be set to Date.now() */;
|
13
|
+
context: Trace['context'] & {
|
14
|
+
tenant: string;
|
15
|
+
product: string;
|
16
|
+
clientID: string;
|
17
|
+
redirectUri?: string;
|
18
|
+
requestedOIDCFlow?: boolean;
|
19
|
+
isSAMLFederated?: boolean;
|
20
|
+
isIDPFlow?: boolean;
|
21
|
+
relayState?: string;
|
22
|
+
providerName?: string;
|
23
|
+
acsUrl?: string;
|
24
|
+
entityId?: string;
|
25
|
+
samlRequest?: string;
|
26
|
+
samlResponse?: string;
|
27
|
+
issuer?: string;
|
28
|
+
profile?: SAMLProfile;
|
29
|
+
};
|
30
|
+
}
|
31
|
+
export type SAMLTracerInstance = InstanceType<typeof SAMLTracer>;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/saml-tracer/types.ts"],"names":[],"mappings":""}
|