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.
@@ -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;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAsD3C,wBAA8B,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBAsEhF"}
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 = req.urlInfo?.origin || `${req.protocol}://${req.get('host')}`;
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
- // 6. 构建重定向 URL,重定向回首页(Token 已在 Cookie 中)
100
- // 前端无需从 URL 参数中提取 Token,浏览器会自动在请求中发送 Cookie
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 = req.urlInfo?.origin || `${req.protocol}://${req.get('host')}`;
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":"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"}
1
+ {"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AA8DH,0CA6DC;AAxHD,4EAAmD;AACnD,qDAAkD;AAClD,4CAAgD;AAEhD,8DAA8D;AAE9D,yDAAyD;AACzD,SAAS,iBAAiB;IACxB,MAAM,GAAG,GAAG,IAAA,uBAAc,GAAE,CAAC,WAAW,CAAA;IACxC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;AAC5B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CAAC,IAAY,EAAE,YAAqB;IACrE,qBAAqB;IACrB,MAAM,QAAQ,GAAG,YAAY,IAAI,EAAE,CAAA;IAEnC,qBAAqB;IACrB,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;IACpC,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAA;IAEnC,MAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAA;IACvC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAEvF,aAAa;IACb,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACxF,MAAM,aAAa,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,KAAK,GAAe;QACxB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,oBAAoB;QACrD,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;KAC1D,CAAA;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAEc,KAAK,UAAU,uBAAuB,CAAC,GAAY,EAAE,GAAa;IAC/E,IAAI,CAAC;QACH,YAAY;QACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,KAA2B,CAAA;QAEjF,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;YAClC,MAAM,QAAQ,GAAG,GAAG,MAAM,iBAAiB,kBAAkB,CAAC,iBAAiB,IAAI,KAAK,CAAC,EAAE,CAAA;YAC3F,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;YAClC,MAAM,QAAQ,GAAG,GAAG,MAAM,4BAA4B,CAAA;YACtD,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QAED,0CAA0C;QAC1C,6CAA6C;QAC7C,IAAI,YAAY,GAAG,EAAE,CAAA;QACrB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBAClC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBAC3E,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,gCAAgC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAE5D,oBAAoB;QACpB,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAW,EAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEpD,6CAA6C;QAC7C,uBAAuB;QACvB,IAAA,qCAAmB,EAAC,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAEtE,qCAAqC;QACrC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,IAAA,qCAAmB,EAAC,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA,CAAC,UAAU;QAC7E,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;QAClC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;QAElC,IAAI,QAAQ,GAAG,eAAe,CAAA;QAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;YACnC,QAAQ,GAAG,gBAAgB,CAAA;QAC7B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,MAAM,iBAAiB,QAAQ,EAAE,CAAA;QACrD,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxB,CAAC;AACH,CAAC"}
@@ -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,CA0BjD"}
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,4DA0BC;AA9DD,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;IAEnC,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
+ {"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;AAejD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CA2B5C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
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
- return endpoint.endsWith('/api/oauth')
15
- ? endpoint
16
- : `${endpoint.endsWith('/api') ? endpoint : `${endpoint}/api`}/oauth`;
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: itsClientCallback,
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;;AAwBH,sDA2BC;AAQD,wCAKC;AA5DD;;;GAGG;AACH,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QACpC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,QAAQ,CAAA;AACzE,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,WAAW,GAAG;QACZ,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC;QAClC,SAAS,EAAE,WAAW;QACtB,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,iBAAiB;QAC9B,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
+ {"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"}
@@ -4,6 +4,7 @@
4
4
  * 提供配置好的 axios 实例:
5
5
  * - 基础 URL: OAUTH_ENDPOINT + /api/oauth
6
6
  * - Authorization header: Basic Auth (client_key:client_secret)
7
+ * - 开发环境或 OAUTH_INSECURE_SKIP_TLS_VERIFY=1 时允许自签名证书(请求 ITS)
7
8
  */
8
9
  import { AxiosInstance } from 'axios';
9
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AA+B5C;;;GAGG;AACH,iBAAS,aAAa,IAAI,aAAa,CAKtC;AAED,eAAe,aAAa,CAAA"}
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
- // 创建 axios 实例
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
- return client;
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;;;;;;GAMG;;;;;AAEH,kDAA4C;AAC5C,qCAAyC;AAEzC,IAAI,UAAU,GAAyB,IAAI,CAAA;AAE3C;;;;;GAKG;AACH,SAAS,qBAAqB;IAC5B,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;IAEpC,uBAAuB;IACvB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAC7F,QAAQ,CACT,CAAA;IAED,cAAc;IACd,MAAM,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;QAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,OAAO,EAAE,KAAK;QACd,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,UAAU,EAAE;SACrC;KACF,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sumor",
3
- "version": "3.0.10",
3
+ "version": "3.0.11",
4
4
  "description": "Sumor OAuth framework",
5
5
  "main": "dist/server/index.js",
6
6
  "types": "dist/server/index.d.ts",