chatbot-nc 2.2.37 → 2.2.39
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/cjs/utils/auth.d.ts +5 -5
- package/dist/cjs/utils/auth.js +7 -12
- package/dist/cjs/utils/auth.js.map +1 -1
- package/dist/cjs/utils/error.d.ts +6 -0
- package/dist/cjs/utils/error.js +15 -0
- package/dist/cjs/utils/error.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +11 -11
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/mcp-oauth.d.ts +2 -2
- package/dist/cjs/utils/mcp-oauth.js +80 -19
- package/dist/cjs/utils/mcp-oauth.js.map +1 -1
- package/dist/cjs/utils/oauth.d.ts +4 -4
- package/dist/cjs/utils/oauth.js +43 -14
- package/dist/cjs/utils/oauth.js.map +1 -1
- package/dist/cjs/webbookEvent/index.js +5 -5
- package/dist/cjs/webbookEvent/index.js.map +1 -1
- package/dist/esm/utils/auth.d.ts +5 -5
- package/dist/esm/utils/auth.js +7 -12
- package/dist/esm/utils/auth.js.map +1 -1
- package/dist/esm/utils/error.d.ts +6 -0
- package/dist/esm/utils/error.js +11 -0
- package/dist/esm/utils/error.js.map +1 -0
- package/dist/esm/utils/index.d.ts +11 -11
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/mcp-oauth.d.ts +2 -2
- package/dist/esm/utils/mcp-oauth.js +80 -19
- package/dist/esm/utils/mcp-oauth.js.map +1 -1
- package/dist/esm/utils/oauth.d.ts +4 -4
- package/dist/esm/utils/oauth.js +43 -14
- package/dist/esm/utils/oauth.js.map +1 -1
- package/dist/esm/webbookEvent/index.js +5 -5
- package/dist/esm/webbookEvent/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/utils/auth.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ContentType } from "../enum";
|
|
2
2
|
export declare const Auth: {
|
|
3
|
-
|
|
3
|
+
getApiKey: (authValue: string) => Promise<{
|
|
4
4
|
Key: any;
|
|
5
5
|
Value: any;
|
|
6
6
|
} | null>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
getAuthInfo: (authValue: string) => Promise<any>;
|
|
8
|
+
getBearerToken: (authValue: string) => Promise<string>;
|
|
9
|
+
getContentType: (contentType: ContentType) => Promise<string>;
|
|
10
|
+
attachClientHeaders: (clientHeaders?: string, contentType?: string, sessionAttributes?: Record<string, string>) => Promise<Record<string, string>>;
|
|
11
11
|
};
|
package/dist/cjs/utils/auth.js
CHANGED
|
@@ -6,33 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.Auth = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const enum_1 = require("../enum");
|
|
9
|
-
const
|
|
9
|
+
const getApiKey = async (authValue) => {
|
|
10
10
|
var provisionList = authValue ? JSON.parse(authValue) : null;
|
|
11
11
|
if (!Array.isArray(provisionList))
|
|
12
12
|
return null;
|
|
13
13
|
const providerInfo = Object.fromEntries(provisionList.map((item) => [item.Key, item.Value]));
|
|
14
14
|
if (provisionList != null) {
|
|
15
|
-
// let Key = provisionList.find((x: any) => x.Key == 'AuthApiHeader').Value;
|
|
16
|
-
// let Value = provisionList.find((x: any) => x.Key == 'AuthApiValue').Value;
|
|
17
|
-
// return { Key, Value };
|
|
18
15
|
return { Key: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.AuthApiHeader, Value: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.AuthApiValue };
|
|
19
16
|
}
|
|
20
17
|
return null;
|
|
21
18
|
};
|
|
22
|
-
const
|
|
19
|
+
const getAuthInfo = async (authValue) => {
|
|
23
20
|
let data = Object.assign({});
|
|
24
21
|
var provisionList = authValue ? JSON.parse(authValue) : null;
|
|
25
22
|
if (!Array.isArray(provisionList))
|
|
26
23
|
return data;
|
|
27
24
|
const providerInfo = Object.fromEntries(provisionList.map((item) => [item.Key, item.Value]));
|
|
28
25
|
if (provisionList != null) {
|
|
29
|
-
// let userName = provisionList.find((x: any) => x.Key == 'AuthBasicUsername')?.Value;
|
|
30
|
-
// let password = provisionList.find((x: any) => x.Key == 'AuthBasicPassword')?.Value;
|
|
31
26
|
data = { userName: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.AuthBasicUsername, password: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.AuthBasicPassword };
|
|
32
27
|
}
|
|
33
28
|
return data;
|
|
34
29
|
};
|
|
35
|
-
const
|
|
30
|
+
const getBearerToken = async (authValue) => {
|
|
36
31
|
let token = "";
|
|
37
32
|
var provisionList = authValue ? JSON.parse(authValue) : null;
|
|
38
33
|
if (!Array.isArray(provisionList))
|
|
@@ -40,7 +35,7 @@ const GetBearerToken = async (authValue) => {
|
|
|
40
35
|
const providerInfo = Object.fromEntries(provisionList.map((item) => [item.Key, item.Value]));
|
|
41
36
|
if (provisionList != null) {
|
|
42
37
|
let payload = { userName: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.AuthBearerUsername, username: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.AuthBearerUsername, password: providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.AuthBearerPassword };
|
|
43
|
-
let strContentType = await
|
|
38
|
+
let strContentType = await getContentType(enum_1.ContentType.applicationJson);
|
|
44
39
|
let config = {
|
|
45
40
|
headers: {
|
|
46
41
|
"Content-Type": strContentType
|
|
@@ -55,7 +50,7 @@ const GetBearerToken = async (authValue) => {
|
|
|
55
50
|
}
|
|
56
51
|
return token;
|
|
57
52
|
};
|
|
58
|
-
const
|
|
53
|
+
const getContentType = async (contentType) => {
|
|
59
54
|
let responeValue = "";
|
|
60
55
|
switch (contentType) {
|
|
61
56
|
case enum_1.ContentType.applicationJson:
|
|
@@ -64,7 +59,7 @@ const GetContentType = async (contentType) => {
|
|
|
64
59
|
}
|
|
65
60
|
return responeValue;
|
|
66
61
|
};
|
|
67
|
-
const
|
|
62
|
+
const attachClientHeaders = async (clientHeaders, contentType, sessionAttributes) => {
|
|
68
63
|
try {
|
|
69
64
|
const headers = { 'Content-Type': contentType !== null && contentType !== void 0 ? contentType : 'application/json', "Accept": "application/json, text/event-stream, application/x-ndjson, application/json-seq" };
|
|
70
65
|
let defaultHeader = clientHeaders && clientHeaders != undefined && clientHeaders != null ? JSON.parse(clientHeaders) : null;
|
|
@@ -81,5 +76,5 @@ const AttachClientHeaders = async (clientHeaders, contentType, sessionAttributes
|
|
|
81
76
|
throw error;
|
|
82
77
|
}
|
|
83
78
|
};
|
|
84
|
-
exports.Auth = {
|
|
79
|
+
exports.Auth = { getApiKey, getAuthInfo, getBearerToken, getContentType, attachClientHeaders };
|
|
85
80
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../utils/auth.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD;AAElD,kCAAsC;AAEtC,MAAM,SAAS,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;IAE7C,IAAI,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACtC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAChC,CAAC;IAE1B,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QAC3B,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../utils/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BadRequestException = void 0;
|
|
4
|
+
class BadRequestException extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "BadRequestException";
|
|
8
|
+
this.statusCode = 400;
|
|
9
|
+
this.error = "Bad_Request";
|
|
10
|
+
this.code = "BAD_REQUEST";
|
|
11
|
+
Object.setPrototypeOf(this, BadRequestException.prototype);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.BadRequestException = BadRequestException;
|
|
15
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../utils/error.ts"],"names":[],"mappings":";;;AAAA,MAAa,mBAAoB,SAAQ,KAAK;IAK5C,YAAY,OAAc;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF;AAbD,kDAaC"}
|
|
@@ -37,14 +37,14 @@ export declare const Utils: {
|
|
|
37
37
|
formatUSDate: (date: Date) => string;
|
|
38
38
|
};
|
|
39
39
|
Auth: {
|
|
40
|
-
|
|
40
|
+
getApiKey: (authValue: string) => Promise<{
|
|
41
41
|
Key: any;
|
|
42
42
|
Value: any;
|
|
43
43
|
} | null>;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
getAuthInfo: (authValue: string) => Promise<any>;
|
|
45
|
+
getBearerToken: (authValue: string) => Promise<string>;
|
|
46
|
+
getContentType: (contentType: import("../enum").ContentType) => Promise<string>;
|
|
47
|
+
attachClientHeaders: (clientHeaders?: string, contentType?: string, sessionAttributes?: Record<string, string>) => Promise<Record<string, string>>;
|
|
48
48
|
};
|
|
49
49
|
jwt: typeof jwt;
|
|
50
50
|
OAuth: {
|
|
@@ -54,10 +54,10 @@ export declare const Utils: {
|
|
|
54
54
|
code_challenge: string | null;
|
|
55
55
|
code_challenge_method: "S256" | "plain" | null;
|
|
56
56
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
oauthAccessToken: (code: string, providerInfo: Record<import("../type").OAuthKeys, string>, code_verfier: string) => Promise<any>;
|
|
58
|
+
oauthToken: (authValue: string) => Promise<any>;
|
|
59
|
+
oauthRefreshToken: (providerInfo: Record<import("../type").OAuthKeys, string>) => Promise<any>;
|
|
60
|
+
setTokenExpiry: (expiresIn?: number) => Promise<string>;
|
|
61
61
|
};
|
|
62
62
|
MCPOAuth: {
|
|
63
63
|
discoverOAuthResourceMetadata: (mcpServerUrl: string) => Promise<import("../type").OAuthMCPProtectedResourceMetadata>;
|
|
@@ -65,7 +65,7 @@ export declare const Utils: {
|
|
|
65
65
|
registerClient: (metadata: import("../type").OAuthMCPMetadata, redirectUris: string[], client_Name?: string) => Promise<import("../type").ClientCredentials>;
|
|
66
66
|
buildAuthorizationUrl: (metadata: import("../type").OAuthMCPMetadata, clientId: string, redirectUri: string, state: string, codeChallenge?: string, codeChallengeMethod?: string, resource?: string) => Promise<string>;
|
|
67
67
|
handleCallBack: (callbackUrl: string, storedState: string, codeVerifier: string) => Promise<string>;
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
mcpOAuthAccessToken: (code: string, redirect_uri: string, metaData: import("../type").OAuthMCPMetadata | import("../type").OAuthMetadata, clientCredentials: import("../type").ClientCredentials, code_verifier?: string) => Promise<any>;
|
|
69
|
+
mcpOAuthRefreshToken: (metaData: import("../type").OAuthMCPMetadata | import("../type").OAuthMetadata, clientCredentials: import("../type").ClientCredentials, refresh_token: string) => Promise<any>;
|
|
70
70
|
};
|
|
71
71
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAkC;AAClC,qCAAmC;AACnC,+CAA2C;AAC3C,kDAAoC;AACpC,iCAA8B;AAC9B,mCAAgC;AAChC,2CAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAkC;AAClC,qCAAmC;AACnC,+CAA2C;AAC3C,kDAAoC;AACpC,iCAA8B;AAC9B,mCAAgC;AAChC,2CAAuC;AAG1B,QAAA,KAAK,GAAG;IACjB,OAAO,EAAP,gBAAO;IACP,MAAM,EAAN,eAAM;IACN,UAAU,EAAV,wBAAU;IACV,IAAI,EAAJ,WAAI;IACJ,GAAG;IACH,KAAK,EAAL,aAAK;IACL,QAAQ,EAAR,oBAAQ;CACX,CAAA"}
|
|
@@ -5,6 +5,6 @@ export declare const MCPOAuth: {
|
|
|
5
5
|
registerClient: (metadata: OAuthMCPMetadata, redirectUris: string[], client_Name?: string) => Promise<ClientCredentials>;
|
|
6
6
|
buildAuthorizationUrl: (metadata: OAuthMCPMetadata, clientId: string, redirectUri: string, state: string, codeChallenge?: string, codeChallengeMethod?: string, resource?: string) => Promise<string>;
|
|
7
7
|
handleCallBack: (callbackUrl: string, storedState: string, codeVerifier: string) => Promise<string>;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
mcpOAuthAccessToken: (code: string, redirect_uri: string, metaData: OAuthMCPMetadata | OAuthMetadata, clientCredentials: ClientCredentials, code_verifier?: string) => Promise<any>;
|
|
9
|
+
mcpOAuthRefreshToken: (metaData: OAuthMCPMetadata | OAuthMetadata, clientCredentials: ClientCredentials, refresh_token: string) => Promise<any>;
|
|
10
10
|
};
|
|
@@ -6,13 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.MCPOAuth = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const logger_1 = __importDefault(require("../logger"));
|
|
9
|
+
const error_1 = require("./error");
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param mcpServerUrl
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
9
15
|
const discoverOAuthResourceMetadata = async (mcpServerUrl) => {
|
|
10
16
|
const url = new URL(mcpServerUrl);
|
|
11
17
|
const protectedResourceUrl = new URL("/.well-known/oauth-protected-resource", url);
|
|
12
18
|
// Step 1: RFC 9470 - Get Protected Resource Metadata
|
|
13
19
|
const protectedResourceResponse = await fetch(protectedResourceUrl.toString());
|
|
14
20
|
if (!protectedResourceResponse.ok) {
|
|
15
|
-
throw new
|
|
21
|
+
throw new error_1.BadRequestException(`Failed to fetch protected resource metadata: ` +
|
|
16
22
|
`${protectedResourceResponse.status}`);
|
|
17
23
|
}
|
|
18
24
|
const protectedResource = (await protectedResourceResponse.json());
|
|
@@ -26,21 +32,25 @@ const discoverOAuthMetadata = async (mcpServerUrl) => {
|
|
|
26
32
|
const protectedResource = (await discoverOAuthResourceMetadata(mcpServerUrl));
|
|
27
33
|
const authServers = protectedResource.authorization_servers;
|
|
28
34
|
if (!Array.isArray(authServers) || authServers.length === 0) {
|
|
29
|
-
throw new
|
|
35
|
+
throw new error_1.BadRequestException("No authorization servers found in protected resource metadata");
|
|
30
36
|
}
|
|
31
37
|
// Use the first authorization server
|
|
32
38
|
const authServerUrl = authServers[0];
|
|
33
39
|
// Step 2: RFC 8414 - Get Authorization Server Metadata
|
|
34
40
|
const metadataUrl = new URL("/.well-known/oauth-authorization-server", authServerUrl);
|
|
35
|
-
|
|
41
|
+
let metadataResponse = await fetch(metadataUrl.toString());
|
|
36
42
|
if (!metadataResponse.ok) {
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
const secondMetaDataUrl = new URL("/.well-known/oauth-authorization-server", mcpServerUrl);
|
|
44
|
+
metadataResponse = await fetch(secondMetaDataUrl.toString());
|
|
45
|
+
if (!metadataResponse.ok) {
|
|
46
|
+
throw new error_1.BadRequestException(`Failed to fetch authorization server metadata: ` +
|
|
47
|
+
`${metadataResponse.status}`);
|
|
48
|
+
}
|
|
39
49
|
}
|
|
40
50
|
const metadata = (await metadataResponse.json());
|
|
41
51
|
// Validate required fields
|
|
42
52
|
if (!metadata.authorization_endpoint || !metadata.token_endpoint) {
|
|
43
|
-
throw new
|
|
53
|
+
throw new error_1.BadRequestException("Missing required OAuth endpoints in metadata");
|
|
44
54
|
}
|
|
45
55
|
// Warn if PKCE support isn't advertised
|
|
46
56
|
if (!((_a = metadata.code_challenge_methods_supported) === null || _a === void 0 ? void 0 : _a.includes("S256"))) {
|
|
@@ -49,10 +59,17 @@ const discoverOAuthMetadata = async (mcpServerUrl) => {
|
|
|
49
59
|
}
|
|
50
60
|
return metadata;
|
|
51
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
* @param metadata
|
|
65
|
+
* @param redirectUris
|
|
66
|
+
* @param client_Name
|
|
67
|
+
* @returns
|
|
68
|
+
*/
|
|
52
69
|
const registerClient = async (metadata, redirectUris, client_Name = "AuroCX") => {
|
|
53
70
|
var _a, _b, _c, _d, _e;
|
|
54
71
|
if (!metadata.registration_endpoint)
|
|
55
|
-
throw new
|
|
72
|
+
throw new error_1.BadRequestException("Server does not support dynamic client registration");
|
|
56
73
|
const registrationRequest = {
|
|
57
74
|
client_name: client_Name,
|
|
58
75
|
redirect_uris: redirectUris,
|
|
@@ -72,12 +89,23 @@ const registerClient = async (metadata, redirectUris, client_Name = "AuroCX") =>
|
|
|
72
89
|
});
|
|
73
90
|
if (!response.ok) {
|
|
74
91
|
const errorBody = await response.text();
|
|
75
|
-
throw new
|
|
92
|
+
throw new error_1.BadRequestException(`Client registration failed: ${response.status} - ${errorBody}`);
|
|
76
93
|
}
|
|
77
94
|
const credentials = (await response.json());
|
|
78
95
|
// Store credentials securely
|
|
79
96
|
return credentials;
|
|
80
97
|
};
|
|
98
|
+
/**
|
|
99
|
+
*
|
|
100
|
+
* @param metadata
|
|
101
|
+
* @param clientId
|
|
102
|
+
* @param redirectUri
|
|
103
|
+
* @param state
|
|
104
|
+
* @param codeChallenge
|
|
105
|
+
* @param codeChallengeMethod
|
|
106
|
+
* @param resource
|
|
107
|
+
* @returns
|
|
108
|
+
*/
|
|
81
109
|
const buildAuthorizationUrl = async (metadata, clientId, redirectUri, state, codeChallenge, codeChallengeMethod, resource) => {
|
|
82
110
|
var _a;
|
|
83
111
|
let param = {
|
|
@@ -99,20 +127,32 @@ const buildAuthorizationUrl = async (metadata, clientId, redirectUri, state, cod
|
|
|
99
127
|
const params = new URLSearchParams(param);
|
|
100
128
|
return `${metadata.authorization_endpoint}?${params.toString()}`;
|
|
101
129
|
};
|
|
130
|
+
/**
|
|
131
|
+
*
|
|
132
|
+
* @param callbackUrl
|
|
133
|
+
* @param storedState
|
|
134
|
+
* @param codeVerifier
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
102
137
|
const handleCallBack = async (callbackUrl, storedState, codeVerifier) => {
|
|
103
138
|
const params = parseCallback(callbackUrl);
|
|
104
139
|
if (params.error) {
|
|
105
|
-
throw new
|
|
140
|
+
throw new error_1.BadRequestException(`OAuth error: ${params.error} - ` +
|
|
106
141
|
`${params.error_description || "Unknown error"}`);
|
|
107
142
|
}
|
|
108
143
|
if (params.state !== storedState) {
|
|
109
|
-
throw new
|
|
144
|
+
throw new error_1.BadRequestException("Invalid state parameter - possible CSRF attack");
|
|
110
145
|
}
|
|
111
146
|
if (!params.code) {
|
|
112
|
-
throw new
|
|
147
|
+
throw new error_1.BadRequestException("Missing authorization code");
|
|
113
148
|
}
|
|
114
149
|
return params.code;
|
|
115
150
|
};
|
|
151
|
+
/**
|
|
152
|
+
*
|
|
153
|
+
* @param url
|
|
154
|
+
* @returns
|
|
155
|
+
*/
|
|
116
156
|
const parseCallback = (url) => {
|
|
117
157
|
const urlParams = new URLSearchParams(new URL(url).search);
|
|
118
158
|
return {
|
|
@@ -131,11 +171,11 @@ const parseCallback = (url) => {
|
|
|
131
171
|
// return tokenInfo;
|
|
132
172
|
// }
|
|
133
173
|
// if (!tokenInfo?.access_token || tokenInfo?.accessToken)
|
|
134
|
-
// throw new
|
|
174
|
+
// throw new BadRequestException("Token Not Found");
|
|
135
175
|
// // 🔹 Step 2: Check expiry
|
|
136
176
|
// let refresh_token = tokenInfo.refresh_token || tokenInfo?.refreshToken;
|
|
137
177
|
// if (!refresh_token)
|
|
138
|
-
// throw new
|
|
178
|
+
// throw new BadRequestException("Refresh Token Not Found");
|
|
139
179
|
// const isExpired = !tokenInfo.expire_at || Number(tokenInfo.expire_at) <= Date.now();
|
|
140
180
|
// if (isExpired && refresh_token) {
|
|
141
181
|
// tokenInfo = await GetOAuthMCPRefreshToken(metaData,clientCredentials,refresh_token);
|
|
@@ -144,7 +184,16 @@ const parseCallback = (url) => {
|
|
|
144
184
|
// }
|
|
145
185
|
// return tokenInfo;
|
|
146
186
|
// }
|
|
147
|
-
|
|
187
|
+
/**
|
|
188
|
+
*
|
|
189
|
+
* @param code
|
|
190
|
+
* @param redirect_uri
|
|
191
|
+
* @param metaData
|
|
192
|
+
* @param clientCredentials
|
|
193
|
+
* @param code_verifier
|
|
194
|
+
* @returns
|
|
195
|
+
*/
|
|
196
|
+
const mcpOAuthAccessToken = async (code, redirect_uri, metaData, clientCredentials, code_verifier) => {
|
|
148
197
|
var _a, _b, _c, _d, _e;
|
|
149
198
|
try {
|
|
150
199
|
let headers = { "Content-Type": 'application/x-www-form-urlencoded' };
|
|
@@ -171,14 +220,21 @@ const GetOAuthMCPAccessToken = async (code, redirect_uri, metaData, clientCreden
|
|
|
171
220
|
logger_1.default.error("Error in Axios Call of Token Validation" + err);
|
|
172
221
|
throw err;
|
|
173
222
|
});
|
|
174
|
-
tokenInfo = Object.assign(tokenInfo, { expire_at: await
|
|
223
|
+
tokenInfo = Object.assign(tokenInfo, { expire_at: await setTokenExpiry((tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expires_in) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expiry) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expire)) });
|
|
175
224
|
return tokenInfo;
|
|
176
225
|
}
|
|
177
226
|
catch (error) {
|
|
178
227
|
throw error;
|
|
179
228
|
}
|
|
180
229
|
};
|
|
181
|
-
|
|
230
|
+
/**
|
|
231
|
+
*
|
|
232
|
+
* @param metaData
|
|
233
|
+
* @param clientCredentials
|
|
234
|
+
* @param refresh_token
|
|
235
|
+
* @returns
|
|
236
|
+
*/
|
|
237
|
+
const mcpOAuthRefreshToken = async (metaData, clientCredentials, refresh_token) => {
|
|
182
238
|
var _a, _b, _c, _d;
|
|
183
239
|
try {
|
|
184
240
|
let headers = { "Content-Type": 'application/x-www-form-urlencoded' };
|
|
@@ -202,15 +258,20 @@ const GetOAuthMCPRefreshToken = async (metaData, clientCredentials, refresh_toke
|
|
|
202
258
|
logger_1.default.error("Error in Axios Call of refresh Token" + err);
|
|
203
259
|
throw err;
|
|
204
260
|
});
|
|
205
|
-
tokenInfo = Object.assign(tokenInfo, { expire_at: await
|
|
261
|
+
tokenInfo = Object.assign(tokenInfo, { expire_at: await setTokenExpiry((tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expires_in) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expiry) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expire)) });
|
|
206
262
|
return tokenInfo;
|
|
207
263
|
}
|
|
208
264
|
catch (error) {
|
|
209
265
|
throw error;
|
|
210
266
|
}
|
|
211
267
|
};
|
|
212
|
-
|
|
268
|
+
/**
|
|
269
|
+
*
|
|
270
|
+
* @param expiresIn
|
|
271
|
+
* @returns
|
|
272
|
+
*/
|
|
273
|
+
const setTokenExpiry = async (expiresIn = 1800) => {
|
|
213
274
|
return (Date.now() + ((expiresIn - 60) * 1000)).toString();
|
|
214
275
|
};
|
|
215
|
-
exports.MCPOAuth = { discoverOAuthResourceMetadata, discoverOAuthMetadata, registerClient, buildAuthorizationUrl, handleCallBack,
|
|
276
|
+
exports.MCPOAuth = { discoverOAuthResourceMetadata, discoverOAuthMetadata, registerClient, buildAuthorizationUrl, handleCallBack, mcpOAuthAccessToken, mcpOAuthRefreshToken };
|
|
216
277
|
//# sourceMappingURL=mcp-oauth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-oauth.js","sourceRoot":"","sources":["../../../utils/mcp-oauth.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;
|
|
1
|
+
{"version":3,"file":"mcp-oauth.js","sourceRoot":"","sources":["../../../utils/mcp-oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ export declare const OAuth: {
|
|
|
6
6
|
code_challenge: string | null;
|
|
7
7
|
code_challenge_method: "S256" | "plain" | null;
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
oauthAccessToken: (code: string, providerInfo: Record<OAuthKeys, string>, code_verfier: string) => Promise<any>;
|
|
10
|
+
oauthToken: (authValue: string) => Promise<any>;
|
|
11
|
+
oauthRefreshToken: (providerInfo: Record<OAuthKeys, string>) => Promise<any>;
|
|
12
|
+
setTokenExpiry: (expiresIn?: number) => Promise<string>;
|
|
13
13
|
};
|
package/dist/cjs/utils/oauth.js
CHANGED
|
@@ -5,8 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.OAuth = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
|
-
const logger_1 = __importDefault(require("../logger"));
|
|
9
8
|
const crypto_1 = require("crypto");
|
|
9
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
10
|
+
const error_1 = require("./error");
|
|
10
11
|
const OPENID_CONFIGURATION_URLS = {
|
|
11
12
|
// Google
|
|
12
13
|
google: "https://accounts.google.com",
|
|
@@ -69,7 +70,7 @@ const resolveProviderUrl = (provider) => {
|
|
|
69
70
|
// lookup provider name
|
|
70
71
|
const url = OPENID_CONFIGURATION_URLS[provider.toLowerCase()];
|
|
71
72
|
if (!url) {
|
|
72
|
-
throw new
|
|
73
|
+
throw new error_1.BadRequestException(`Unsupported OAuth provider: ${provider}`);
|
|
73
74
|
}
|
|
74
75
|
return url;
|
|
75
76
|
}
|
|
@@ -87,30 +88,42 @@ const discoverOAuthOpenIdMetadata = async (providerUrl) => {
|
|
|
87
88
|
// Step 1: RFC 9470 - Get OpenId Configuration
|
|
88
89
|
const openIdResponse = await fetch(discoveryUrl.toString());
|
|
89
90
|
if (!openIdResponse.ok) {
|
|
90
|
-
throw new
|
|
91
|
+
throw new error_1.BadRequestException(`Failed to fetch OpenID configuration: ` +
|
|
91
92
|
`${openIdResponse.status}`);
|
|
92
93
|
}
|
|
93
94
|
const metadata = (await openIdResponse.json());
|
|
94
95
|
return metadata;
|
|
95
96
|
};
|
|
96
|
-
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @param authValue
|
|
100
|
+
* @returns
|
|
101
|
+
*/
|
|
102
|
+
const oauthToken = async (authValue) => {
|
|
97
103
|
if (!authValue)
|
|
98
|
-
throw new
|
|
104
|
+
throw new error_1.BadRequestException("OAuth Config Not Found");
|
|
99
105
|
const provisionList = JSON.parse(authValue);
|
|
100
106
|
if (!Array.isArray(provisionList))
|
|
101
107
|
return "";
|
|
102
108
|
const providerInfo = Object.fromEntries(provisionList.map((item) => [item.Key, item.Value]));
|
|
103
109
|
// 🔹 Step 1: If no token → fetch new one
|
|
104
110
|
if (!providerInfo.Token) {
|
|
105
|
-
return await
|
|
111
|
+
return await oauthAccessToken("", providerInfo, "");
|
|
106
112
|
}
|
|
107
113
|
// 🔹 Step 2: Check expiry
|
|
108
114
|
const isExpired = !providerInfo.Expire || Number(providerInfo.Expire) <= Date.now();
|
|
109
115
|
if (isExpired && providerInfo.RefreshToken) {
|
|
110
|
-
return await
|
|
116
|
+
return await oauthRefreshToken(providerInfo);
|
|
111
117
|
}
|
|
112
118
|
};
|
|
113
|
-
|
|
119
|
+
/**
|
|
120
|
+
*
|
|
121
|
+
* @param code
|
|
122
|
+
* @param providerInfo
|
|
123
|
+
* @param code_verfier
|
|
124
|
+
* @returns
|
|
125
|
+
*/
|
|
126
|
+
const oauthAccessToken = async (code, providerInfo, code_verfier) => {
|
|
114
127
|
try {
|
|
115
128
|
let headers = { "Content-Type": 'application/x-www-form-urlencoded' };
|
|
116
129
|
const keys = {
|
|
@@ -137,14 +150,19 @@ const GetOAuthAccessToken = async (code, providerInfo, code_verfier) => {
|
|
|
137
150
|
console.error("Error in Axios call of Token Validation" + err);
|
|
138
151
|
throw err;
|
|
139
152
|
});
|
|
140
|
-
tokenInfo = Object.assign(tokenInfo, { expire_at: await
|
|
153
|
+
tokenInfo = Object.assign(tokenInfo, { expire_at: await setTokenExpiry((tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expires_in) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expiry) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expire)) });
|
|
141
154
|
return tokenInfo;
|
|
142
155
|
}
|
|
143
156
|
catch (error) {
|
|
144
157
|
throw error;
|
|
145
158
|
}
|
|
146
159
|
};
|
|
147
|
-
|
|
160
|
+
/**
|
|
161
|
+
*
|
|
162
|
+
* @param providerInfo
|
|
163
|
+
* @returns
|
|
164
|
+
*/
|
|
165
|
+
const oauthRefreshToken = async (providerInfo) => {
|
|
148
166
|
try {
|
|
149
167
|
let headers = { "Content-Type": 'application/x-www-form-urlencoded' };
|
|
150
168
|
const keys = {
|
|
@@ -167,17 +185,22 @@ const GetOAuthRefreshToken = async (providerInfo) => {
|
|
|
167
185
|
logger_1.default.error("Error in Axios Call of refresh Token" + err);
|
|
168
186
|
throw err;
|
|
169
187
|
});
|
|
170
|
-
tokenInfo = Object.assign(tokenInfo, { expire_at: await
|
|
188
|
+
tokenInfo = Object.assign(tokenInfo, { expire_at: await setTokenExpiry((tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expires_in) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expiry) || (tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.expire)) });
|
|
171
189
|
return tokenInfo;
|
|
172
190
|
}
|
|
173
191
|
catch (error) {
|
|
174
192
|
throw error;
|
|
175
193
|
}
|
|
176
194
|
};
|
|
177
|
-
|
|
195
|
+
/**
|
|
196
|
+
*
|
|
197
|
+
* @param expiresIn
|
|
198
|
+
* @returns
|
|
199
|
+
*/
|
|
200
|
+
const setTokenExpiry = async (expiresIn = 1800) => {
|
|
178
201
|
return (Date.now() + ((expiresIn - 60) * 1000)).toString();
|
|
179
202
|
};
|
|
180
|
-
// const
|
|
203
|
+
// const oauthURL = async (providerInfo: Record<OAuthKeys, string>)=> {
|
|
181
204
|
// try {
|
|
182
205
|
// const scope = providerInfo?.Scope;
|
|
183
206
|
// const tokenKey = providerInfo.CodeVerifier || await this.ssmService.getParameterValue('SIGNING_KEY');
|
|
@@ -190,6 +213,12 @@ const SetTokenExpiry = async (expiresIn = 1800) => {
|
|
|
190
213
|
// throw error;
|
|
191
214
|
// }
|
|
192
215
|
// }
|
|
216
|
+
/**
|
|
217
|
+
*
|
|
218
|
+
* @param supportedMethods
|
|
219
|
+
* @param code_verifier
|
|
220
|
+
* @returns
|
|
221
|
+
*/
|
|
193
222
|
const generatePKCE = (supportedMethods, code_verifier) => {
|
|
194
223
|
if (!code_verifier)
|
|
195
224
|
code_verifier = (0, crypto_1.randomBytes)(32).toString('base64url');
|
|
@@ -209,5 +238,5 @@ const generatePKCE = (supportedMethods, code_verifier) => {
|
|
|
209
238
|
code_challenge_method
|
|
210
239
|
};
|
|
211
240
|
};
|
|
212
|
-
exports.OAuth = { discoverOAuthOpenIdMetadata, generatePKCE,
|
|
241
|
+
exports.OAuth = { discoverOAuthOpenIdMetadata, generatePKCE, oauthAccessToken, oauthToken, oauthRefreshToken, setTokenExpiry };
|
|
213
242
|
//# sourceMappingURL=oauth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../utils/oauth.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../utils/oauth.ts"],"names":[],"mappings":"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"}
|