@memberjunction/server 5.50.0 → 5.51.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/agentSessions/SessionManager.d.ts.map +1 -1
- package/dist/agentSessions/SessionManager.js +6 -1
- package/dist/agentSessions/SessionManager.js.map +1 -1
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +53 -13
- package/dist/auth/index.js.map +1 -1
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +19 -2
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.d.ts +22 -0
- package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +36 -0
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +21 -0
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +75 -16
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/ReportResolver.d.ts.map +1 -1
- package/dist/resolvers/ReportResolver.js +2 -1
- package/dist/resolvers/ReportResolver.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts +49 -1
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +129 -43
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/package.json +89 -89
- package/src/__tests__/OAuthCallbackHandler.openRedirect.test.ts +117 -0
- package/src/__tests__/OAuthCallbackHandler.xss.test.ts +4 -1
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +420 -0
- package/src/__tests__/SessionManager.test.ts +62 -0
- package/src/__tests__/newUsers.test.ts +729 -0
- package/src/__tests__/widgetGuestElevation.test.ts +70 -2
- package/src/agentSessions/SessionManager.ts +6 -1
- package/src/auth/index.ts +56 -15
- package/src/config.ts +12 -0
- package/src/context.ts +19 -2
- package/src/index.ts +3 -1
- package/src/realtimeWidget/widgetGuestElevation.ts +41 -0
- package/src/resolvers/RealtimeClientSessionResolver.ts +84 -16
- package/src/resolvers/ReportResolver.ts +2 -1
- package/src/resolvers/__tests__/ReportResolver.test.ts +232 -0
- package/src/rest/OAuthCallbackHandler.ts +149 -41
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import express from 'express';
|
|
15
15
|
import { LogError, LogStatus, RunView } from '@memberjunction/core';
|
|
16
|
-
import { UUIDsEqual } from '@memberjunction/global';
|
|
16
|
+
import { IsValidUUID, UUIDsEqual } from '@memberjunction/global';
|
|
17
17
|
import { UserCache } from '@memberjunction/sqlserver-dataprovider';
|
|
18
18
|
import { OAuthManager, MCPClientManager } from '@memberjunction/ai-mcp-client';
|
|
19
19
|
/** Entity name for MCP Server Connections */
|
|
@@ -28,10 +28,15 @@ const ENTITY_OAUTH_AUTHORIZATION_STATES = 'MJ: O Auth Authorization States';
|
|
|
28
28
|
* The callback endpoint is unauthenticated because it's called by external auth servers.
|
|
29
29
|
* It uses the state parameter to look up the authorization context and validate the flow.
|
|
30
30
|
*
|
|
31
|
+
* NOTE: `allowedFrontendOrigins` is what prevents the callback becoming an open redirect, and is
|
|
32
|
+
* required so it cannot be forgotten. Wire it to `configInfo.cors?.allowedOrigins`; `['*']` allows
|
|
33
|
+
* any origin, matching MJ's default CORS posture.
|
|
34
|
+
*
|
|
31
35
|
* @example
|
|
32
36
|
* ```typescript
|
|
33
37
|
* const oauthHandler = new OAuthCallbackHandler({
|
|
34
|
-
* publicUrl: 'https://api.example.com'
|
|
38
|
+
* publicUrl: 'https://api.example.com',
|
|
39
|
+
* allowedFrontendOrigins: configInfo.cors?.allowedOrigins ?? ['*']
|
|
35
40
|
* });
|
|
36
41
|
*
|
|
37
42
|
* // Mount unauthenticated callback route
|
|
@@ -293,7 +298,10 @@ export class OAuthCallbackHandler {
|
|
|
293
298
|
* @param res - Express response
|
|
294
299
|
*/
|
|
295
300
|
async initiateFlow(req, res) {
|
|
296
|
-
|
|
301
|
+
// Coerce request-body values to strings up front. A JSON body can carry arrays/objects, and
|
|
302
|
+
// passing those downstream unvalidated turns a bad request into a confusing internal failure.
|
|
303
|
+
const connectionId = typeof req.body?.connectionId === 'string' ? req.body.connectionId : '';
|
|
304
|
+
const { additionalScopes, frontendReturnUrl } = req.body;
|
|
297
305
|
const contextUser = req['mjUser'];
|
|
298
306
|
if (!contextUser) {
|
|
299
307
|
res.status(401).json({
|
|
@@ -310,6 +318,27 @@ export class OAuthCallbackHandler {
|
|
|
310
318
|
});
|
|
311
319
|
return;
|
|
312
320
|
}
|
|
321
|
+
// connectionId is a record ID (UUID). Reject anything else at the boundary so it can never
|
|
322
|
+
// reach a SQL filter or downstream consumer as injectable input.
|
|
323
|
+
if (!IsValidUUID(connectionId)) {
|
|
324
|
+
res.status(400).json({
|
|
325
|
+
success: false,
|
|
326
|
+
errorCode: 'invalid_request',
|
|
327
|
+
errorMessage: 'connectionId must be a valid record identifier'
|
|
328
|
+
});
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
// Reject a disallowed return URL here rather than at the callback. Otherwise the caller only
|
|
332
|
+
// finds out after the whole OAuth round trip, by being silently sent to the default page.
|
|
333
|
+
// An absent value is acceptable — see isFrontendReturnUrlAcceptable.
|
|
334
|
+
if (!this.isFrontendReturnUrlAcceptable(frontendReturnUrl)) {
|
|
335
|
+
res.status(400).json({
|
|
336
|
+
success: false,
|
|
337
|
+
errorCode: 'invalid_request',
|
|
338
|
+
errorMessage: 'frontendReturnUrl is not an allowed redirect target'
|
|
339
|
+
});
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
313
342
|
try {
|
|
314
343
|
// Load connection and server config
|
|
315
344
|
const config = await this.loadConnectionConfig(connectionId, contextUser);
|
|
@@ -529,10 +558,13 @@ export class OAuthCallbackHandler {
|
|
|
529
558
|
async loadConnectionConfig(connectionId, contextUser) {
|
|
530
559
|
try {
|
|
531
560
|
const rv = new RunView();
|
|
532
|
-
// Get connection to get server ID
|
|
561
|
+
// Get connection to get server ID.
|
|
562
|
+
// connectionId is caller-supplied (POST /oauth/initiate body). MJ ExtraFilter is a raw
|
|
563
|
+
// SQL fragment, so single quotes MUST be doubled to prevent injection — matching the
|
|
564
|
+
// escaping used for stateParameter in loadAuthorizationState().
|
|
533
565
|
const connResult = await rv.RunView({
|
|
534
566
|
EntityName: ENTITY_MCP_SERVER_CONNECTIONS,
|
|
535
|
-
ExtraFilter: `ID='${connectionId}'`,
|
|
567
|
+
ExtraFilter: `ID='${connectionId.replace(/'/g, "''")}'`,
|
|
536
568
|
Fields: ['MCPServerID'],
|
|
537
569
|
ResultType: 'simple'
|
|
538
570
|
}, contextUser);
|
|
@@ -570,58 +602,112 @@ export class OAuthCallbackHandler {
|
|
|
570
602
|
}
|
|
571
603
|
}
|
|
572
604
|
/**
|
|
573
|
-
*
|
|
574
|
-
*
|
|
605
|
+
* Validates that a caller-supplied frontend return URL points at an allowed origin, so the
|
|
606
|
+
* OAuth callback cannot be turned into an open redirect from the trusted MJAPI origin.
|
|
607
|
+
*
|
|
608
|
+
* Allowed when: the allowlist is "allow all" (`['*']`, the backward-compatible default),
|
|
609
|
+
* the URL's origin is in `options.allowedFrontendOrigins`, or it matches the origin of a
|
|
610
|
+
* built-in success/error redirect URL. Anything else is rejected and the caller falls back to
|
|
611
|
+
* the default redirect page.
|
|
575
612
|
*/
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
if (
|
|
613
|
+
isFrontendReturnUrlAllowed(url) {
|
|
614
|
+
const allowed = this.options.allowedFrontendOrigins;
|
|
615
|
+
if (allowed.includes('*')) {
|
|
616
|
+
return true;
|
|
617
|
+
}
|
|
618
|
+
if (allowed.includes(url.origin)) {
|
|
619
|
+
return true;
|
|
620
|
+
}
|
|
621
|
+
for (const builtIn of [this.options.successRedirectUrl, this.options.errorRedirectUrl]) {
|
|
579
622
|
try {
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
url.searchParams.set('connectionId', connectionId);
|
|
584
|
-
LogStatus(`[OAuth Callback] Redirecting to frontend URL: ${url.toString()}`);
|
|
585
|
-
res.redirect(302, url.toString());
|
|
586
|
-
return;
|
|
623
|
+
if (builtIn && new URL(builtIn).origin === url.origin) {
|
|
624
|
+
return true;
|
|
625
|
+
}
|
|
587
626
|
}
|
|
588
|
-
catch
|
|
589
|
-
|
|
590
|
-
// Fall through to default redirect
|
|
627
|
+
catch {
|
|
628
|
+
// Ignore an unparseable built-in URL and keep checking.
|
|
591
629
|
}
|
|
592
630
|
}
|
|
631
|
+
return false;
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Parses a caller-supplied return URL and applies {@link isFrontendReturnUrlAllowed}.
|
|
635
|
+
*
|
|
636
|
+
* @returns the parsed URL when it is well-formed AND points at an allowed origin, otherwise null.
|
|
637
|
+
*/
|
|
638
|
+
parseAllowedFrontendReturnUrl(frontendReturnUrl) {
|
|
639
|
+
let url;
|
|
640
|
+
try {
|
|
641
|
+
url = new URL(frontendReturnUrl);
|
|
642
|
+
}
|
|
643
|
+
catch {
|
|
644
|
+
LogError(`[OAuth Callback] Invalid frontend return URL '${frontendReturnUrl}', falling back to default`);
|
|
645
|
+
return null;
|
|
646
|
+
}
|
|
647
|
+
if (!this.isFrontendReturnUrlAllowed(url)) {
|
|
648
|
+
LogError(`[OAuth Callback] frontend return URL '${frontendReturnUrl}' origin not allowed, falling back to default`);
|
|
649
|
+
return null;
|
|
650
|
+
}
|
|
651
|
+
return url;
|
|
652
|
+
}
|
|
653
|
+
/**
|
|
654
|
+
* Boundary check for `/oauth/initiate` — validates the return URL before it is persisted onto
|
|
655
|
+
* the authorization state, so a caller gets a 400 instead of a silent fallback later.
|
|
656
|
+
*
|
|
657
|
+
* An ABSENT value (undefined / null / empty string) is acceptable: it means "no return URL", and
|
|
658
|
+
* every downstream consumer treats it that way via a truthiness check. Only a value the caller
|
|
659
|
+
* actually supplied is validated — otherwise omitting the field, or sending an empty one, would
|
|
660
|
+
* newly fail a request that has always worked.
|
|
661
|
+
*/
|
|
662
|
+
isFrontendReturnUrlAcceptable(frontendReturnUrl) {
|
|
663
|
+
if (!frontendReturnUrl) {
|
|
664
|
+
return true;
|
|
665
|
+
}
|
|
666
|
+
return typeof frontendReturnUrl === 'string' && this.parseAllowedFrontendReturnUrl(frontendReturnUrl) !== null;
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Redirects to success page with state info.
|
|
670
|
+
* If a frontend return URL is provided, redirects there instead of the default success page.
|
|
671
|
+
*/
|
|
672
|
+
redirectToSuccess(res, state, connectionId, frontendReturnUrl) {
|
|
673
|
+
// If frontend return URL is provided and points at an allowed origin, redirect there with
|
|
674
|
+
// success parameters. Anything else falls through to the built-in page.
|
|
675
|
+
const url = frontendReturnUrl ? this.parseAllowedFrontendReturnUrl(frontendReturnUrl) : null;
|
|
676
|
+
if (url) {
|
|
677
|
+
url.searchParams.set('oauth', 'success');
|
|
678
|
+
url.searchParams.set('state', state);
|
|
679
|
+
url.searchParams.set('connectionId', connectionId);
|
|
680
|
+
LogStatus(`[OAuth Callback] Redirecting to frontend URL: ${url.toString()}`);
|
|
681
|
+
res.redirect(302, url.toString());
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
593
684
|
// Default: redirect to built-in success page
|
|
594
|
-
const
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
res.redirect(302,
|
|
685
|
+
const defaultUrl = new URL(this.options.successRedirectUrl);
|
|
686
|
+
defaultUrl.searchParams.set('state', state);
|
|
687
|
+
defaultUrl.searchParams.set('connectionId', connectionId);
|
|
688
|
+
res.redirect(302, defaultUrl.toString());
|
|
598
689
|
}
|
|
599
690
|
/**
|
|
600
691
|
* Redirects to error page with error info.
|
|
601
692
|
* If a frontend return URL is provided, redirects there instead of the default error page.
|
|
602
693
|
*/
|
|
603
694
|
redirectToError(res, errorCode, errorMessage, frontendReturnUrl) {
|
|
604
|
-
// If frontend return URL is provided, redirect there with
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
}
|
|
615
|
-
catch (error) {
|
|
616
|
-
LogError(`[OAuth Callback] Invalid frontend return URL '${frontendReturnUrl}', falling back to default`);
|
|
617
|
-
// Fall through to default redirect
|
|
618
|
-
}
|
|
695
|
+
// If frontend return URL is provided and points at an allowed origin, redirect there with
|
|
696
|
+
// error parameters. Anything else falls through to the built-in page.
|
|
697
|
+
const url = frontendReturnUrl ? this.parseAllowedFrontendReturnUrl(frontendReturnUrl) : null;
|
|
698
|
+
if (url) {
|
|
699
|
+
url.searchParams.set('oauth', 'error');
|
|
700
|
+
url.searchParams.set('error', errorCode);
|
|
701
|
+
url.searchParams.set('error_description', errorMessage);
|
|
702
|
+
LogStatus(`[OAuth Callback] Redirecting to frontend URL with error: ${url.toString()}`);
|
|
703
|
+
res.redirect(302, url.toString());
|
|
704
|
+
return;
|
|
619
705
|
}
|
|
620
706
|
// Default: redirect to built-in error page
|
|
621
|
-
const
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
res.redirect(302,
|
|
707
|
+
const defaultUrl = new URL(this.options.errorRedirectUrl);
|
|
708
|
+
defaultUrl.searchParams.set('error', errorCode);
|
|
709
|
+
defaultUrl.searchParams.set('error_description', errorMessage);
|
|
710
|
+
res.redirect(302, defaultUrl.toString());
|
|
625
711
|
}
|
|
626
712
|
/**
|
|
627
713
|
* Gets the router for unauthenticated callback endpoint.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthCallbackHandler.js","sourceRoot":"","sources":["../../src/rest/OAuthCallbackHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OAuthCallbackHandler.js","sourceRoot":"","sources":["../../src/rest/OAuthCallbackHandler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/server",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.51.1",
|
|
4
4
|
"description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -27,94 +27,94 @@
|
|
|
27
27
|
"@as-integrations/express5": "^1.0.0",
|
|
28
28
|
"@graphql-tools/schema": "latest",
|
|
29
29
|
"@graphql-tools/utils": "^11.0.0",
|
|
30
|
-
"@memberjunction/actions": "5.
|
|
31
|
-
"@memberjunction/actions-apollo": "5.
|
|
32
|
-
"@memberjunction/actions-base": "5.
|
|
33
|
-
"@memberjunction/actions-bizapps-accounting": "5.
|
|
34
|
-
"@memberjunction/actions-bizapps-crm": "5.
|
|
35
|
-
"@memberjunction/actions-bizapps-formbuilders": "5.
|
|
36
|
-
"@memberjunction/actions-bizapps-lms": "5.
|
|
37
|
-
"@memberjunction/actions-bizapps-social": "5.
|
|
38
|
-
"@memberjunction/ai": "5.
|
|
39
|
-
"@memberjunction/ai-agent-manager": "5.
|
|
40
|
-
"@memberjunction/ai-agent-manager-actions": "5.
|
|
41
|
-
"@memberjunction/ai-agents": "5.
|
|
42
|
-
"@memberjunction/ai-bridge-base": "5.
|
|
43
|
-
"@memberjunction/ai-bridge-ringcentral": "5.
|
|
44
|
-
"@memberjunction/ai-bridge-server": "5.
|
|
45
|
-
"@memberjunction/ai-bridge-teams": "5.
|
|
46
|
-
"@memberjunction/ai-bridge-twilio": "5.
|
|
47
|
-
"@memberjunction/ai-bridge-vonage": "5.
|
|
48
|
-
"@memberjunction/ai-core-plus": "5.
|
|
49
|
-
"@memberjunction/ai-engine-base": "5.
|
|
50
|
-
"@memberjunction/ai-mcp-client": "5.
|
|
51
|
-
"@memberjunction/ai-prompts": "5.
|
|
52
|
-
"@memberjunction/ai-provider-bundle": "5.
|
|
53
|
-
"@memberjunction/ai-vector-sync": "5.
|
|
54
|
-
"@memberjunction/ai-vectordb": "5.
|
|
55
|
-
"@memberjunction/ai-vectors-pinecone": "5.
|
|
56
|
-
"@memberjunction/aiengine": "5.
|
|
57
|
-
"@memberjunction/api-keys": "5.
|
|
58
|
-
"@memberjunction/auth-providers": "5.
|
|
59
|
-
"@memberjunction/clustering-engine": "5.
|
|
60
|
-
"@memberjunction/codegen-lib": "5.
|
|
61
|
-
"@memberjunction/communication-engine": "5.
|
|
62
|
-
"@memberjunction/communication-ms-graph": "5.
|
|
63
|
-
"@memberjunction/communication-sendgrid": "5.
|
|
64
|
-
"@memberjunction/communication-types": "5.
|
|
65
|
-
"@memberjunction/component-registry-client-sdk": "5.
|
|
66
|
-
"@memberjunction/computer-use": "5.
|
|
67
|
-
"@memberjunction/computer-use-engine": "5.
|
|
68
|
-
"@memberjunction/config": "5.
|
|
69
|
-
"@memberjunction/core": "5.
|
|
70
|
-
"@memberjunction/core-actions": "5.
|
|
71
|
-
"@memberjunction/core-entities": "5.
|
|
72
|
-
"@memberjunction/core-entities-server": "5.
|
|
73
|
-
"@memberjunction/credentials": "5.
|
|
74
|
-
"@memberjunction/data-context": "5.
|
|
75
|
-
"@memberjunction/data-context-server": "5.
|
|
76
|
-
"@memberjunction/doc-utils": "5.
|
|
77
|
-
"@memberjunction/encryption": "5.
|
|
78
|
-
"@memberjunction/entity-communications-base": "5.
|
|
79
|
-
"@memberjunction/entity-communications-server": "5.
|
|
80
|
-
"@memberjunction/esignature": "5.
|
|
81
|
-
"@memberjunction/external-change-detection": "5.
|
|
82
|
-
"@memberjunction/generic-database-provider": "5.
|
|
83
|
-
"@memberjunction/global": "5.
|
|
84
|
-
"@memberjunction/graphql-dataprovider": "5.
|
|
85
|
-
"@memberjunction/integration-engine": "5.
|
|
86
|
-
"@memberjunction/integration-engine-base": "5.
|
|
87
|
-
"@memberjunction/integration-progress-artifacts": "5.
|
|
88
|
-
"@memberjunction/integration-schema-builder": "5.
|
|
89
|
-
"@memberjunction/interactive-component-types": "5.
|
|
90
|
-
"@memberjunction/lists": "5.
|
|
91
|
-
"@memberjunction/lists-base": "5.
|
|
92
|
-
"@memberjunction/livekit-room-server": "5.
|
|
93
|
-
"@memberjunction/notifications": "5.
|
|
94
|
-
"@memberjunction/postgresql-dataprovider": "5.
|
|
95
|
-
"@memberjunction/queue": "5.
|
|
96
|
-
"@memberjunction/record-comparison": "5.
|
|
97
|
-
"@memberjunction/redis-provider": "5.
|
|
98
|
-
"@memberjunction/remote-browser-base": "5.
|
|
99
|
-
"@memberjunction/remote-browser-cdp": "5.
|
|
100
|
-
"@memberjunction/remote-browser-selfhost": "5.
|
|
101
|
-
"@memberjunction/remote-browser-server": "5.
|
|
102
|
-
"@memberjunction/scheduling-actions": "5.
|
|
103
|
-
"@memberjunction/scheduling-base-types": "5.
|
|
104
|
-
"@memberjunction/scheduling-engine": "5.
|
|
105
|
-
"@memberjunction/scheduling-engine-base": "5.
|
|
106
|
-
"@memberjunction/schema-engine": "5.
|
|
107
|
-
"@memberjunction/search-engine": "5.
|
|
108
|
-
"@memberjunction/server-extensions-core": "5.
|
|
109
|
-
"@memberjunction/sql-dialect": "5.
|
|
110
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
111
|
-
"@memberjunction/storage": "5.
|
|
112
|
-
"@memberjunction/tag-engine": "5.
|
|
113
|
-
"@memberjunction/tag-engine-base": "5.
|
|
114
|
-
"@memberjunction/templates": "5.
|
|
115
|
-
"@memberjunction/testing-engine": "5.
|
|
116
|
-
"@memberjunction/testing-engine-base": "5.
|
|
117
|
-
"@memberjunction/version-history": "5.
|
|
30
|
+
"@memberjunction/actions": "5.51.1",
|
|
31
|
+
"@memberjunction/actions-apollo": "5.51.1",
|
|
32
|
+
"@memberjunction/actions-base": "5.51.1",
|
|
33
|
+
"@memberjunction/actions-bizapps-accounting": "5.51.1",
|
|
34
|
+
"@memberjunction/actions-bizapps-crm": "5.51.1",
|
|
35
|
+
"@memberjunction/actions-bizapps-formbuilders": "5.51.1",
|
|
36
|
+
"@memberjunction/actions-bizapps-lms": "5.51.1",
|
|
37
|
+
"@memberjunction/actions-bizapps-social": "5.51.1",
|
|
38
|
+
"@memberjunction/ai": "5.51.1",
|
|
39
|
+
"@memberjunction/ai-agent-manager": "5.51.1",
|
|
40
|
+
"@memberjunction/ai-agent-manager-actions": "5.51.1",
|
|
41
|
+
"@memberjunction/ai-agents": "5.51.1",
|
|
42
|
+
"@memberjunction/ai-bridge-base": "5.51.1",
|
|
43
|
+
"@memberjunction/ai-bridge-ringcentral": "5.51.1",
|
|
44
|
+
"@memberjunction/ai-bridge-server": "5.51.1",
|
|
45
|
+
"@memberjunction/ai-bridge-teams": "5.51.1",
|
|
46
|
+
"@memberjunction/ai-bridge-twilio": "5.51.1",
|
|
47
|
+
"@memberjunction/ai-bridge-vonage": "5.51.1",
|
|
48
|
+
"@memberjunction/ai-core-plus": "5.51.1",
|
|
49
|
+
"@memberjunction/ai-engine-base": "5.51.1",
|
|
50
|
+
"@memberjunction/ai-mcp-client": "5.51.1",
|
|
51
|
+
"@memberjunction/ai-prompts": "5.51.1",
|
|
52
|
+
"@memberjunction/ai-provider-bundle": "5.51.1",
|
|
53
|
+
"@memberjunction/ai-vector-sync": "5.51.1",
|
|
54
|
+
"@memberjunction/ai-vectordb": "5.51.1",
|
|
55
|
+
"@memberjunction/ai-vectors-pinecone": "5.51.1",
|
|
56
|
+
"@memberjunction/aiengine": "5.51.1",
|
|
57
|
+
"@memberjunction/api-keys": "5.51.1",
|
|
58
|
+
"@memberjunction/auth-providers": "5.51.1",
|
|
59
|
+
"@memberjunction/clustering-engine": "5.51.1",
|
|
60
|
+
"@memberjunction/codegen-lib": "5.51.1",
|
|
61
|
+
"@memberjunction/communication-engine": "5.51.1",
|
|
62
|
+
"@memberjunction/communication-ms-graph": "5.51.1",
|
|
63
|
+
"@memberjunction/communication-sendgrid": "5.51.1",
|
|
64
|
+
"@memberjunction/communication-types": "5.51.1",
|
|
65
|
+
"@memberjunction/component-registry-client-sdk": "5.51.1",
|
|
66
|
+
"@memberjunction/computer-use": "5.51.1",
|
|
67
|
+
"@memberjunction/computer-use-engine": "5.51.1",
|
|
68
|
+
"@memberjunction/config": "5.51.1",
|
|
69
|
+
"@memberjunction/core": "5.51.1",
|
|
70
|
+
"@memberjunction/core-actions": "5.51.1",
|
|
71
|
+
"@memberjunction/core-entities": "5.51.1",
|
|
72
|
+
"@memberjunction/core-entities-server": "5.51.1",
|
|
73
|
+
"@memberjunction/credentials": "5.51.1",
|
|
74
|
+
"@memberjunction/data-context": "5.51.1",
|
|
75
|
+
"@memberjunction/data-context-server": "5.51.1",
|
|
76
|
+
"@memberjunction/doc-utils": "5.51.1",
|
|
77
|
+
"@memberjunction/encryption": "5.51.1",
|
|
78
|
+
"@memberjunction/entity-communications-base": "5.51.1",
|
|
79
|
+
"@memberjunction/entity-communications-server": "5.51.1",
|
|
80
|
+
"@memberjunction/esignature": "5.51.1",
|
|
81
|
+
"@memberjunction/external-change-detection": "5.51.1",
|
|
82
|
+
"@memberjunction/generic-database-provider": "5.51.1",
|
|
83
|
+
"@memberjunction/global": "5.51.1",
|
|
84
|
+
"@memberjunction/graphql-dataprovider": "5.51.1",
|
|
85
|
+
"@memberjunction/integration-engine": "5.51.1",
|
|
86
|
+
"@memberjunction/integration-engine-base": "5.51.1",
|
|
87
|
+
"@memberjunction/integration-progress-artifacts": "5.51.1",
|
|
88
|
+
"@memberjunction/integration-schema-builder": "5.51.1",
|
|
89
|
+
"@memberjunction/interactive-component-types": "5.51.1",
|
|
90
|
+
"@memberjunction/lists": "5.51.1",
|
|
91
|
+
"@memberjunction/lists-base": "5.51.1",
|
|
92
|
+
"@memberjunction/livekit-room-server": "5.51.1",
|
|
93
|
+
"@memberjunction/notifications": "5.51.1",
|
|
94
|
+
"@memberjunction/postgresql-dataprovider": "5.51.1",
|
|
95
|
+
"@memberjunction/queue": "5.51.1",
|
|
96
|
+
"@memberjunction/record-comparison": "5.51.1",
|
|
97
|
+
"@memberjunction/redis-provider": "5.51.1",
|
|
98
|
+
"@memberjunction/remote-browser-base": "5.51.1",
|
|
99
|
+
"@memberjunction/remote-browser-cdp": "5.51.1",
|
|
100
|
+
"@memberjunction/remote-browser-selfhost": "5.51.1",
|
|
101
|
+
"@memberjunction/remote-browser-server": "5.51.1",
|
|
102
|
+
"@memberjunction/scheduling-actions": "5.51.1",
|
|
103
|
+
"@memberjunction/scheduling-base-types": "5.51.1",
|
|
104
|
+
"@memberjunction/scheduling-engine": "5.51.1",
|
|
105
|
+
"@memberjunction/scheduling-engine-base": "5.51.1",
|
|
106
|
+
"@memberjunction/schema-engine": "5.51.1",
|
|
107
|
+
"@memberjunction/search-engine": "5.51.1",
|
|
108
|
+
"@memberjunction/server-extensions-core": "5.51.1",
|
|
109
|
+
"@memberjunction/sql-dialect": "5.51.1",
|
|
110
|
+
"@memberjunction/sqlserver-dataprovider": "5.51.1",
|
|
111
|
+
"@memberjunction/storage": "5.51.1",
|
|
112
|
+
"@memberjunction/tag-engine": "5.51.1",
|
|
113
|
+
"@memberjunction/tag-engine-base": "5.51.1",
|
|
114
|
+
"@memberjunction/templates": "5.51.1",
|
|
115
|
+
"@memberjunction/testing-engine": "5.51.1",
|
|
116
|
+
"@memberjunction/testing-engine-base": "5.51.1",
|
|
117
|
+
"@memberjunction/version-history": "5.51.1",
|
|
118
118
|
"@octokit/auth-app": "^7.1.5",
|
|
119
119
|
"@octokit/rest": "^21.1.1",
|
|
120
120
|
"@types/compression": "^1.8.1",
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { OAuthCallbackHandler, OAuthCallbackHandlerOptions } from '../rest/OAuthCallbackHandler.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The OAuth callback redirects to a caller-supplied `frontendReturnUrl`. Without an origin check
|
|
6
|
+
* that is an open redirect issued *from the trusted MJAPI origin* — a phishing primitive that
|
|
7
|
+
* inherits MJAPI's reputation and any origin-scoped trust a user or downstream system places in it.
|
|
8
|
+
*
|
|
9
|
+
* The guard is reached through a narrowly-typed view of the instance, following the same pattern as
|
|
10
|
+
* OAuthCallbackHandler.xss.test.ts (the method is private by design).
|
|
11
|
+
*/
|
|
12
|
+
interface RedirectGuard {
|
|
13
|
+
isFrontendReturnUrlAllowed(url: URL): boolean;
|
|
14
|
+
parseAllowedFrontendReturnUrl(frontendReturnUrl: string): URL | null;
|
|
15
|
+
isFrontendReturnUrlAcceptable(frontendReturnUrl: unknown): boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const BASE_OPTIONS: Omit<OAuthCallbackHandlerOptions, 'allowedFrontendOrigins'> = {
|
|
19
|
+
publicUrl: 'https://api.example.test',
|
|
20
|
+
successRedirectUrl: 'https://api.example.test/oauth/success',
|
|
21
|
+
errorRedirectUrl: 'https://api.example.test/oauth/error',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
function makeGuard(allowedFrontendOrigins: string[]): RedirectGuard {
|
|
25
|
+
const handler = new OAuthCallbackHandler({ ...BASE_OPTIONS, allowedFrontendOrigins });
|
|
26
|
+
return handler as unknown as RedirectGuard;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe('OAuthCallbackHandler open-redirect protection', () => {
|
|
30
|
+
describe('with an explicit origin allowlist', () => {
|
|
31
|
+
const allowed = ['https://app.example.test', 'https://admin.example.test'];
|
|
32
|
+
|
|
33
|
+
it.each([
|
|
34
|
+
'https://evil.test/steal',
|
|
35
|
+
'https://app.example.test.evil.test/steal',
|
|
36
|
+
'http://app.example.test', // scheme mismatch — origin includes the scheme
|
|
37
|
+
'https://app.example.test:8443', // port mismatch — origin includes the port
|
|
38
|
+
])('rejects %s', (url) => {
|
|
39
|
+
expect(makeGuard(allowed).parseAllowedFrontendReturnUrl(url)).toBeNull();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it.each([
|
|
43
|
+
'https://app.example.test/done',
|
|
44
|
+
'https://admin.example.test/oauth/landing?keep=1',
|
|
45
|
+
])('allows %s', (url) => {
|
|
46
|
+
expect(makeGuard(allowed).parseAllowedFrontendReturnUrl(url)).not.toBeNull();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('allows the built-in redirect origin even when it is not in the allowlist', () => {
|
|
50
|
+
// The success/error pages MJAPI itself serves must always remain reachable.
|
|
51
|
+
expect(
|
|
52
|
+
makeGuard(allowed).parseAllowedFrontendReturnUrl('https://api.example.test/oauth/success')
|
|
53
|
+
).not.toBeNull();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('rejects an unparseable URL', () => {
|
|
57
|
+
expect(makeGuard(allowed).parseAllowedFrontendReturnUrl('not-a-url')).toBeNull();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('rejects a javascript: pseudo-URL', () => {
|
|
61
|
+
// Parses fine as a URL, but its origin is "null" and must not match an allowlist entry.
|
|
62
|
+
expect(makeGuard(allowed).parseAllowedFrontendReturnUrl('javascript:alert(1)')).toBeNull();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe('allowlist edge values', () => {
|
|
67
|
+
it("allows any origin when the allowlist is ['*'] (MJ's default CORS posture)", () => {
|
|
68
|
+
expect(makeGuard(['*']).parseAllowedFrontendReturnUrl('https://evil.test/steal')).not.toBeNull();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('an empty allowlist denies every external origin (fails closed)', () => {
|
|
72
|
+
expect(makeGuard([]).parseAllowedFrontendReturnUrl('https://app.example.test/done')).toBeNull();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('an empty allowlist still permits the built-in redirect origin', () => {
|
|
76
|
+
// Otherwise MJAPI could not reach its own success/error pages.
|
|
77
|
+
expect(
|
|
78
|
+
makeGuard([]).parseAllowedFrontendReturnUrl('https://api.example.test/oauth/success')
|
|
79
|
+
).not.toBeNull();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('request-boundary check used by /oauth/initiate', () => {
|
|
84
|
+
const guard = () => makeGuard(['https://app.example.test']);
|
|
85
|
+
|
|
86
|
+
it('accepts an allowed origin', () => {
|
|
87
|
+
expect(guard().isFrontendReturnUrlAcceptable('https://app.example.test/done')).toBe(true);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('rejects a disallowed origin', () => {
|
|
91
|
+
expect(guard().isFrontendReturnUrlAcceptable('https://evil.test/steal')).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it.each([
|
|
95
|
+
['an array', ['https://app.example.test/done']],
|
|
96
|
+
['an object', { url: 'https://app.example.test/done' }],
|
|
97
|
+
['a number', 42],
|
|
98
|
+
])('rejects %s rather than coercing it', (_label, value) => {
|
|
99
|
+
expect(guard().isFrontendReturnUrlAcceptable(value)).toBe(false);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* REGRESSION GUARD: frontendReturnUrl is optional, and every downstream consumer decides
|
|
104
|
+
* whether to use it with a truthiness check. If this boundary check rejected absent values,
|
|
105
|
+
* a client that omits the field — or sends null / "" for it, which is what an unset form
|
|
106
|
+
* field and most serializers produce — would start getting a 400 on a request that has
|
|
107
|
+
* always worked. Absent means "no return URL", not "invalid return URL".
|
|
108
|
+
*/
|
|
109
|
+
it.each([
|
|
110
|
+
['undefined', undefined],
|
|
111
|
+
['null', null],
|
|
112
|
+
['an empty string', ''],
|
|
113
|
+
])('accepts %s — an absent return URL is not an invalid one', (_label, value) => {
|
|
114
|
+
expect(guard().isFrontendReturnUrlAcceptable(value)).toBe(true);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|