sumor 3.0.10 → 3.0.11
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/server/controllers/oauthCallbackController.d.ts +1 -0
- package/dist/server/controllers/oauthCallbackController.d.ts.map +1 -1
- package/dist/server/controllers/oauthCallbackController.js +11 -12
- package/dist/server/controllers/oauthCallbackController.js.map +1 -1
- package/dist/server/utils/authorizationUrlGenerator.d.ts.map +1 -1
- package/dist/server/utils/authorizationUrlGenerator.js.map +1 -1
- package/dist/server/utils/config.d.ts.map +1 -1
- package/dist/server/utils/config.js +13 -5
- package/dist/server/utils/config.js.map +1 -1
- package/dist/server/utils/http.d.ts +1 -0
- package/dist/server/utils/http.d.ts.map +1 -1
- package/dist/server/utils/http.js +9 -5
- package/dist/server/utils/http.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* GET /api/oauth/callback
|
|
4
4
|
*
|
|
5
5
|
* 接收来自 ITS OAuth 授权端点的授权码,进行 Token 交换
|
|
6
|
+
* 重定向地址使用配置的 redirectUri 的 origin,确保在 Vite 代理场景下回到 Web 入口(如 21200)而非后端端口(21100)
|
|
6
7
|
*/
|
|
7
8
|
import { Request, Response } from 'express';
|
|
8
9
|
export default function oauthCallbackController(req: Request, res: Response): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthCallbackController.d.ts","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"oauthCallbackController.d.ts","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AA4D3C,wBAA8B,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBA6DhF"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* GET /api/oauth/callback
|
|
5
5
|
*
|
|
6
6
|
* 接收来自 ITS OAuth 授权端点的授权码,进行 Token 交换
|
|
7
|
+
* 重定向地址使用配置的 redirectUri 的 origin,确保在 Vite 代理场景下回到 Web 入口(如 21200)而非后端端口(21100)
|
|
7
8
|
*/
|
|
8
9
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
10
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -14,6 +15,11 @@ const oauthService_1 = __importDefault(require("../services/oauthService"));
|
|
|
14
15
|
const tokenModel_1 = require("../models/tokenModel");
|
|
15
16
|
const config_1 = require("../utils/config");
|
|
16
17
|
const oauthTokenUtils_1 = require("../utils/oauthTokenUtils");
|
|
18
|
+
/** 重定向使用的 origin,仅来自配置的 OAUTH_REDIRECT_URI(与授权回调地址一致) */
|
|
19
|
+
function getRedirectOrigin() {
|
|
20
|
+
const uri = (0, config_1.getOAuthConfig)().redirectUri;
|
|
21
|
+
return new URL(uri).origin;
|
|
22
|
+
}
|
|
17
23
|
/**
|
|
18
24
|
* 用授权码交换 Token
|
|
19
25
|
* RFC 6749 §4.1.3
|
|
@@ -58,16 +64,13 @@ async function oauthCallbackController(req, res) {
|
|
|
58
64
|
try {
|
|
59
65
|
// 1. 解析回调参数
|
|
60
66
|
const { code, state, error, error_description } = req.query;
|
|
61
|
-
// 处理授权拒绝
|
|
62
67
|
if (error) {
|
|
63
|
-
|
|
64
|
-
const origin = req.urlInfo?.origin || `${req.protocol}://${req.get('host')}`;
|
|
68
|
+
const origin = getRedirectOrigin();
|
|
65
69
|
const errorUrl = `${origin}/?oauth_error=${encodeURIComponent(error_description || error)}`;
|
|
66
70
|
return res.redirect(errorUrl);
|
|
67
71
|
}
|
|
68
|
-
// 验证必需参数
|
|
69
72
|
if (!code) {
|
|
70
|
-
const origin =
|
|
73
|
+
const origin = getRedirectOrigin();
|
|
71
74
|
const errorUrl = `${origin}/?oauth_error=missing_code`;
|
|
72
75
|
return res.redirect(errorUrl);
|
|
73
76
|
}
|
|
@@ -96,15 +99,11 @@ async function oauthCallbackController(req, res) {
|
|
|
96
99
|
if (token.refreshToken) {
|
|
97
100
|
(0, oauthTokenUtils_1.setOAuthTokenCookie)(res, token.refreshToken, 2592000, 'refresh'); // 30 days
|
|
98
101
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const origin = req.urlInfo?.origin || `${req.protocol}://${req.get('host')}`;
|
|
102
|
-
const callbackUrl = `${origin}/`;
|
|
103
|
-
// 重定向到首页,Token 通过 Cookie 自动发送
|
|
104
|
-
res.redirect(callbackUrl);
|
|
102
|
+
const origin = getRedirectOrigin();
|
|
103
|
+
res.redirect(`${origin}/`);
|
|
105
104
|
}
|
|
106
105
|
catch (error) {
|
|
107
|
-
const origin =
|
|
106
|
+
const origin = getRedirectOrigin();
|
|
108
107
|
let errorMsg = 'unknown_error';
|
|
109
108
|
if (error.response?.status === 401) {
|
|
110
109
|
errorMsg = 'invalid_client';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":";AAAA;;;;;
|
|
1
|
+
{"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorizationUrlGenerator.d.ts","sourceRoot":"","sources":["../../../server/utils/authorizationUrlGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkCH;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"authorizationUrlGenerator.d.ts","sourceRoot":"","sources":["../../../server/utils/authorizationUrlGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkCH;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAyBjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorizationUrlGenerator.js","sourceRoot":"","sources":["../../../server/utils/authorizationUrlGenerator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAsCH,
|
|
1
|
+
{"version":3,"file":"authorizationUrlGenerator.js","sourceRoot":"","sources":["../../../server/utils/authorizationUrlGenerator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAsCH,4DAyBC;AA7DD,oDAA2B;AAC3B,qCAAyC;AAEzC;;GAEG;AACH,SAAS,qBAAqB;IAI5B,MAAM,YAAY,GAAG,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,gBAAM;SACrB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,QAAQ,CAAC;SAChB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEpB,OAAO;QACL,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,YAAY;KAC3B,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,OAAO,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB;IACtC,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;IACpC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,qBAAqB,EAAE,CAAA;IAE/D,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAA;IACnC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,EAAE,CAAA;IACnC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,WAAW,CAAA;IAEvF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,MAAM;QACpB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,cAAc;QACrB,aAAa,EAAE,aAAa;QAC5B,mBAAmB,EAAE,MAAM;KAC5B,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,GAAG,WAAW,CAAC,OAAO,cAAc,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAEvE,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAqBjD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CA6B5C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
|
|
@@ -6,14 +6,21 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.initializeOAuthConfig = initializeOAuthConfig;
|
|
8
8
|
exports.getOAuthConfig = getOAuthConfig;
|
|
9
|
+
function normalizeRedirectUri(uri) {
|
|
10
|
+
const s = uri.trim();
|
|
11
|
+
return s.endsWith('/') && s.length > 1 ? s.slice(0, -1) : s;
|
|
12
|
+
}
|
|
9
13
|
/**
|
|
10
14
|
* 构建完整的 OAuth API 基础 URL
|
|
11
|
-
* 将 OAUTH_ENDPOINT 补全为 {endpoint}/api/oauth
|
|
15
|
+
* 将 OAUTH_ENDPOINT 补全为 {endpoint}/api/oauth 的格式,避免尾部斜杠导致双斜杠(如 8443//api)
|
|
12
16
|
*/
|
|
13
17
|
function buildBaseUrl(endpoint) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
const base = endpoint.replace(/\/+$/, '');
|
|
19
|
+
if (base.endsWith('/api/oauth'))
|
|
20
|
+
return base;
|
|
21
|
+
if (base.endsWith('/api'))
|
|
22
|
+
return `${base}/oauth`;
|
|
23
|
+
return `${base}/api/oauth`;
|
|
17
24
|
}
|
|
18
25
|
// 缓存的配置对象
|
|
19
26
|
let oauthConfig = null;
|
|
@@ -39,12 +46,13 @@ function initializeOAuthConfig() {
|
|
|
39
46
|
if (!itsClientCallback) {
|
|
40
47
|
throw new Error('缺少 OAUTH_REDIRECT_URI 环境变量配置(回调地址)');
|
|
41
48
|
}
|
|
49
|
+
const redirectUri = normalizeRedirectUri(itsClientCallback);
|
|
42
50
|
oauthConfig = {
|
|
43
51
|
endpoint: itsEndpoint,
|
|
44
52
|
baseUrl: buildBaseUrl(itsEndpoint),
|
|
45
53
|
clientKey: itsClientId,
|
|
46
54
|
clientSecret: itsClientSecret,
|
|
47
|
-
redirectUri
|
|
55
|
+
redirectUri,
|
|
48
56
|
itsEndpoint: itsEndpoint
|
|
49
57
|
};
|
|
50
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA8BH,sDA6BC;AAQD,wCAKC;AApED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACpB,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,IAAI,QAAQ,CAAA;IACjD,OAAO,GAAG,IAAI,YAAY,CAAA;AAC5B,CAAC;AAED,UAAU;AACV,IAAI,WAAW,GAAuB,IAAI,CAAA;AAE1C;;;;;;GAMG;AACH,SAAgB,qBAAqB;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;IAChD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAA;IACvD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAExD,YAAY;IACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;IAE3D,WAAW,GAAG;QACZ,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC;QAClC,SAAS,EAAE,WAAW;QACtB,YAAY,EAAE,eAAe;QAC7B,WAAW;QACX,WAAW,EAAE,WAAW;KACzB,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAoC5C;;;GAGG;AACH,iBAAS,aAAa,IAAI,aAAa,CAKtC;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -5,14 +5,17 @@
|
|
|
5
5
|
* 提供配置好的 axios 实例:
|
|
6
6
|
* - 基础 URL: OAUTH_ENDPOINT + /api/oauth
|
|
7
7
|
* - Authorization header: Basic Auth (client_key:client_secret)
|
|
8
|
+
* - 开发环境或 OAUTH_INSECURE_SKIP_TLS_VERIFY=1 时允许自签名证书(请求 ITS)
|
|
8
9
|
*/
|
|
9
10
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
11
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
12
|
};
|
|
12
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const https_1 = __importDefault(require("https"));
|
|
13
15
|
const axios_1 = __importDefault(require("axios"));
|
|
14
16
|
const config_1 = require("./config");
|
|
15
17
|
let httpClient = null;
|
|
18
|
+
const skipTlsVerify = process.env.NODE_ENV !== 'production' || process.env.OAUTH_INSECURE_SKIP_TLS_VERIFY === '1';
|
|
16
19
|
/**
|
|
17
20
|
* 创建 OAuth HTTP 客户端实例
|
|
18
21
|
*
|
|
@@ -21,17 +24,18 @@ let httpClient = null;
|
|
|
21
24
|
*/
|
|
22
25
|
function createOAuthHttpClient() {
|
|
23
26
|
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
24
|
-
// 生成 Basic Auth header
|
|
25
27
|
const authHeader = Buffer.from(`${oauthConfig.clientKey}:${oauthConfig.clientSecret}`).toString('base64');
|
|
26
|
-
|
|
27
|
-
const client = axios_1.default.create({
|
|
28
|
+
const axiosConfig = {
|
|
28
29
|
baseURL: oauthConfig.baseUrl,
|
|
29
30
|
timeout: 10000,
|
|
30
31
|
headers: {
|
|
31
32
|
Authorization: `Basic ${authHeader}`
|
|
32
33
|
}
|
|
33
|
-
}
|
|
34
|
-
|
|
34
|
+
};
|
|
35
|
+
if (skipTlsVerify) {
|
|
36
|
+
axiosConfig.httpsAgent = new https_1.default.Agent({ rejectUnauthorized: false });
|
|
37
|
+
}
|
|
38
|
+
return axios_1.default.create(axiosConfig);
|
|
35
39
|
}
|
|
36
40
|
/**
|
|
37
41
|
* 获取 HTTP 客户端实例
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;AAEH,kDAAyB;AACzB,kDAA4C;AAC5C,qCAAyC;AAEzC,IAAI,UAAU,GAAyB,IAAI,CAAA;AAE3C,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,GAAG,CAAA;AAE7F;;;;;GAKG;AACH,SAAS,qBAAqB;IAC5B,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;IAEpC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAC7F,QAAQ,CACT,CAAA;IAED,MAAM,WAAW,GAAuC;QACtD,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,OAAO,EAAE,KAAK;QACd,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,UAAU,EAAE;SACrC;KACF,CAAA;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,WAAW,CAAC,UAAU,GAAG,IAAI,eAAK,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa;IACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,qBAAqB,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,kBAAe,aAAa,CAAA"}
|