sumor 3.0.0 → 3.0.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/server/controllers/getAuthorizeUrlController.d.ts.map +1 -1
- package/dist/server/controllers/getAuthorizeUrlController.js +5 -4
- package/dist/server/controllers/getAuthorizeUrlController.js.map +1 -1
- package/dist/server/controllers/infoController.d.ts.map +1 -1
- package/dist/server/controllers/infoController.js +5 -4
- package/dist/server/controllers/infoController.js.map +1 -1
- package/dist/server/controllers/oauthCallbackController.d.ts.map +1 -1
- package/dist/server/controllers/oauthCallbackController.js +3 -2
- package/dist/server/controllers/oauthCallbackController.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -6
- package/dist/server/index.js.map +1 -1
- package/dist/server/models/tokenModel.d.ts.map +1 -1
- package/dist/server/models/tokenModel.js +4 -6
- package/dist/server/models/tokenModel.js.map +1 -1
- package/dist/server/utils/config.d.ts +15 -2
- package/dist/server/utils/config.d.ts.map +1 -1
- package/dist/server/utils/config.js +23 -5
- package/dist/server/utils/config.js.map +1 -1
- package/dist/server/utils/http.d.ts +2 -2
- package/dist/server/utils/http.d.ts.map +1 -1
- package/dist/server/utils/http.js +17 -7
- package/dist/server/utils/http.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthorizeUrlController.d.ts","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"getAuthorizeUrlController.d.ts","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAgE3C,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,QAgB5E"}
|
|
@@ -11,7 +11,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.default = getAuthorizeUrlController;
|
|
13
13
|
const crypto_1 = __importDefault(require("crypto"));
|
|
14
|
-
const config_1 =
|
|
14
|
+
const config_1 = require("../utils/config");
|
|
15
15
|
/**
|
|
16
16
|
* 生成 PKCE code_challenge 和 code_verifier
|
|
17
17
|
*/
|
|
@@ -40,15 +40,16 @@ function generateState() {
|
|
|
40
40
|
* RFC 6749 §4.1.1,支持 PKCE(RFC 7636)用于增强安全性
|
|
41
41
|
*/
|
|
42
42
|
function generateAuthorizationUrl() {
|
|
43
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
43
44
|
const { codeChallenge, codeVerifier } = generateCodeChallenge();
|
|
44
|
-
const uri =
|
|
45
|
+
const uri = oauthConfig.redirectUri;
|
|
45
46
|
if (!uri || uri.trim() === '') {
|
|
46
47
|
throw new Error('redirectUri 为空或未配置,无法生成授权 URL');
|
|
47
48
|
}
|
|
48
49
|
const randomState = generateState();
|
|
49
50
|
const encryptedState = Buffer.from(codeVerifier).toString('base64') + ':' + randomState;
|
|
50
51
|
const params = new URLSearchParams({
|
|
51
|
-
clientKey:
|
|
52
|
+
clientKey: oauthConfig.clientKey,
|
|
52
53
|
redirectUri: uri,
|
|
53
54
|
responseType: 'code',
|
|
54
55
|
scope: 'profile',
|
|
@@ -56,7 +57,7 @@ function generateAuthorizationUrl() {
|
|
|
56
57
|
codeChallenge: codeChallenge,
|
|
57
58
|
codeChallengeMethod: 'S256'
|
|
58
59
|
});
|
|
59
|
-
const authUrl = `${
|
|
60
|
+
const authUrl = `${oauthConfig.baseUrl}/authorize?${params.toString()}`;
|
|
60
61
|
return authUrl;
|
|
61
62
|
}
|
|
62
63
|
function getAuthorizeUrlController(req, res) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthorizeUrlController.js","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;
|
|
1
|
+
{"version":3,"file":"getAuthorizeUrlController.js","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAmEH,4CAgBC;AAjFD,oDAA2B;AAE3B,4CAAgD;AAEhD;;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,SAAS,wBAAwB;IAC/B,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;AAED,SAAwB,yBAAyB,CAAC,GAAY,EAAE,GAAa;IAC3E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,wBAAwB,EAAE,CAAA;QAE1C,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACJ,OAAO;aACR;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infoController.d.ts","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"infoController.d.ts","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkEH;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAU,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,kBAc7D,CAAA"}
|
|
@@ -9,7 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.getItsInfo = void 0;
|
|
11
11
|
const crypto_1 = __importDefault(require("crypto"));
|
|
12
|
-
const config_1 =
|
|
12
|
+
const config_1 = require("../utils/config");
|
|
13
13
|
/**
|
|
14
14
|
* 生成 PKCE code_challenge 和 code_verifier
|
|
15
15
|
*/
|
|
@@ -38,15 +38,16 @@ function generateState() {
|
|
|
38
38
|
* RFC 6749 §4.1.1,支持 PKCE(RFC 7636)用于增强安全性
|
|
39
39
|
*/
|
|
40
40
|
function generateAuthorizationUrl() {
|
|
41
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
41
42
|
const { codeChallenge, codeVerifier } = generateCodeChallenge();
|
|
42
|
-
const uri =
|
|
43
|
+
const uri = oauthConfig.redirectUri;
|
|
43
44
|
if (!uri || uri.trim() === '') {
|
|
44
45
|
throw new Error('redirectUri 为空或未配置,无法生成授权 URL');
|
|
45
46
|
}
|
|
46
47
|
const randomState = generateState();
|
|
47
48
|
const encryptedState = Buffer.from(codeVerifier).toString('base64') + ':' + randomState;
|
|
48
49
|
const params = new URLSearchParams({
|
|
49
|
-
clientKey:
|
|
50
|
+
clientKey: oauthConfig.clientKey,
|
|
50
51
|
redirectUri: uri,
|
|
51
52
|
responseType: 'code',
|
|
52
53
|
scope: 'profile',
|
|
@@ -54,7 +55,7 @@ function generateAuthorizationUrl() {
|
|
|
54
55
|
codeChallenge: codeChallenge,
|
|
55
56
|
codeChallengeMethod: 'S256'
|
|
56
57
|
});
|
|
57
|
-
const authUrl = `${
|
|
58
|
+
const authUrl = `${oauthConfig.baseUrl}/authorize?${params.toString()}`;
|
|
58
59
|
return authUrl;
|
|
59
60
|
}
|
|
60
61
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infoController.js","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,oDAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"infoController.js","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,oDAA2B;AAC3B,4CAAgD;AAEhD;;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,SAAS,wBAAwB;IAC/B,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;AAED;;;;;GAKG;AACI,MAAM,UAAU,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,wBAAwB,EAAE,CAAA;QAEpD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACJ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ;gBAClC,YAAY,EAAE,iBAAiB;aAChC;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAdY,QAAA,UAAU,cActB"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.default = oauthCallbackController;
|
|
13
13
|
const oauthService_1 = __importDefault(require("../services/oauthService"));
|
|
14
14
|
const tokenModel_1 = require("../models/tokenModel");
|
|
15
|
-
const config_1 =
|
|
15
|
+
const config_1 = require("../utils/config");
|
|
16
16
|
const oauthTokenUtils_1 = require("../utils/oauthTokenUtils");
|
|
17
17
|
/**
|
|
18
18
|
* 用授权码交换 Token
|
|
@@ -22,7 +22,8 @@ async function exchangeCodeForToken(code, codeVerifier) {
|
|
|
22
22
|
// 使用传入的 codeVerifier
|
|
23
23
|
const verifier = codeVerifier || '';
|
|
24
24
|
// 使用配置中的 redirectUri
|
|
25
|
-
const
|
|
25
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
26
|
+
const uri = oauthConfig.redirectUri;
|
|
26
27
|
const oauthService = new oauthService_1.default();
|
|
27
28
|
const data = await oauthService.exchangeCode('authorization_code', code, uri, verifier);
|
|
28
29
|
// 验证响应数据的完整性
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;
|
|
1
|
+
{"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAiBrD;;;;;;GAMG;AACH,wBAA8B,UAAU,CACtC,GAAG,EAAE,OAAO,EACZ,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
package/dist/server/index.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.default = setupSumor;
|
|
|
11
11
|
const oauthService_1 = __importDefault(require("./services/oauthService"));
|
|
12
12
|
const routes_1 = __importDefault(require("./routes"));
|
|
13
13
|
const loadJwtUserMiddleware_1 = require("./middlewares/loadJwtUserMiddleware");
|
|
14
|
+
const config_1 = require("./utils/config");
|
|
14
15
|
/**
|
|
15
16
|
* 初始化 Sumor OAuth 权限同步
|
|
16
17
|
* 将 client 的权限定义同步到 Sumor
|
|
@@ -34,19 +35,19 @@ async function initializeOAuthPermissions(permissionConfig) {
|
|
|
34
35
|
*/
|
|
35
36
|
async function setupSumor(app, permissionConfig) {
|
|
36
37
|
try {
|
|
37
|
-
// 0.
|
|
38
|
-
;
|
|
38
|
+
// 0. 初始化 OAuth 配置(验证环境变量)
|
|
39
|
+
(0, config_1.initializeOAuthConfig)();
|
|
39
40
|
app.sumor = new oauthService_1.default();
|
|
40
|
-
//
|
|
41
|
+
// 2. 初始化 OAuth 权限同步
|
|
41
42
|
await initializeOAuthPermissions(permissionConfig);
|
|
42
|
-
//
|
|
43
|
+
// 3. 注册 JWT 用户加载中间件
|
|
43
44
|
app.use('/api', loadJwtUserMiddleware_1.loadJwtUserMiddleware);
|
|
44
|
-
//
|
|
45
|
+
// 3.5. 在 /api 路由上注册 req.sumor 挂载中间件
|
|
45
46
|
app.use('/api', (req, res, next) => {
|
|
46
47
|
req.sumor = app.sumor;
|
|
47
48
|
next();
|
|
48
49
|
});
|
|
49
|
-
//
|
|
50
|
+
// 4. 注册 OAuth 路由
|
|
50
51
|
app.use('/api/oauth', routes_1.default);
|
|
51
52
|
}
|
|
52
53
|
catch (error) {
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AA+BH,6BA4BC;AAxDD,2EAAkD;AAClD,sDAAkC;AAClC,+EAA2E;AAC3E,2CAAsD;AAGtD;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CAAC,gBAAkC;IAC1E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAA;QAEvC,iBAAiB;QACjB,MAAO,YAAoB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IACjE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACY,KAAK,UAAU,UAAU,CACtC,GAAY,EACZ,gBAAkC;IAElC,IAAI,CAAC;QACH,0BAA0B;QAC1B,IAAA,8BAAqB,GAAE,CAGtB;QAAC,GAAW,CAAC,KAAK,GAAG,IAAI,sBAAY,EAAE,CAAA;QAExC,oBAAoB;QACpB,MAAM,0BAA0B,CAAC,gBAAgB,CAAC,CAAA;QAElD,oBAAoB;QACpB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,6CAAqB,CAAC,CAAA;QAEtC,oCAAoC;QACpC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACtC,GAAG,CAAC,KAAK,GAAI,GAAW,CAAC,KAAK,CAAA;YAC9B,IAAI,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;QAEF,iBAAiB;QACjB,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAW,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenModel.d.ts","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenModel.d.ts","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAgCnD;AAKD;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAM1C;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAGtE"}
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
* Token 模型
|
|
4
4
|
* 支持 Token 验证和解析(使用本地缓存的公钥)
|
|
5
5
|
*/
|
|
6
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
-
};
|
|
9
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
7
|
exports.TokenModel = void 0;
|
|
11
8
|
exports.getTokenModel = getTokenModel;
|
|
@@ -13,7 +10,7 @@ exports.verifyToken = verifyToken;
|
|
|
13
10
|
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
14
11
|
const jwksModel_1 = require("./jwksModel");
|
|
15
12
|
const blacklistModel_1 = require("./blacklistModel");
|
|
16
|
-
const config_1 =
|
|
13
|
+
const config_1 = require("../utils/config");
|
|
17
14
|
/**
|
|
18
15
|
* Token 模型类
|
|
19
16
|
* 用于验证和解析 OAuth Token
|
|
@@ -38,8 +35,9 @@ class TokenModel {
|
|
|
38
35
|
// 2. 验证 Token 签名(本地验证,无网络延迟)
|
|
39
36
|
// issuer: ITS 的域名(不含协议和端口)
|
|
40
37
|
// audience: client 的域名(不含协议和端口)
|
|
41
|
-
const
|
|
42
|
-
const
|
|
38
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
39
|
+
const itsIssuer = new URL(oauthConfig.itsEndpoint).hostname;
|
|
40
|
+
const expectedAudience = new URL(oauthConfig.redirectUri).hostname;
|
|
43
41
|
const payload = (0, jsonwebtoken_1.verify)(token, publicKey, {
|
|
44
42
|
algorithms: ['RS256'],
|
|
45
43
|
issuer: itsIssuer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenModel.js","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":";AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"tokenModel.js","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkEH,sCAMC;AAOD,kCAGC;AAhFD,+CAAqC;AACrC,2CAA0C;AAC1C,qDAAoD;AACpD,4CAAgD;AAGhD;;;GAGG;AACH,MAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,gCAAgC;QAChC,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,GAAE,CAAA;QAEtC,6BAA6B;QAC7B,2BAA2B;QAC3B,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;QACpC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAA;QAC3D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAA;QAElE,MAAM,OAAO,GAAG,IAAA,qBAAM,EAAC,KAAK,EAAE,SAAS,EAAE;YACvC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,gBAAgB;SAC3B,CAAiB,CAAA;QAElB,iCAAiC;QACjC,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,kCAAiB,GAAE,CAAA;QAC1C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AA9CD,gCA8CC;AAED,KAAK;AACL,IAAI,kBAAkB,GAAsB,IAAI,CAAA;AAEhD;;GAEG;AACH,SAAgB,aAAa;IAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,IAAI,UAAU,EAAE,CAAA;IACvC,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,KAAa;IAC7C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
* 从环境变量读取配置
|
|
4
4
|
*/
|
|
5
5
|
import type { OAuthConfig } from '../types/oauth';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* 初始化 OAuth 配置
|
|
8
|
+
* 验证环境变量并创建配置对象
|
|
9
|
+
* 必须在应用启动时调用,且要在 dotenv 加载之后
|
|
10
|
+
*
|
|
11
|
+
* @throws 当缺少必需的环境变量时抛出错误
|
|
12
|
+
*/
|
|
13
|
+
export declare function initializeOAuthConfig(): void;
|
|
14
|
+
/**
|
|
15
|
+
* 获取 OAuth 配置
|
|
16
|
+
* 必须在 initializeOAuthConfig 调用后使用
|
|
17
|
+
*
|
|
18
|
+
* @throws 当未调用 initializeOAuthConfig 时抛出错误
|
|
19
|
+
*/
|
|
20
|
+
export declare function getOAuthConfig(): OAuthConfig;
|
|
8
21
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -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;AAejD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CA2B5C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* 从环境变量读取配置
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.initializeOAuthConfig = initializeOAuthConfig;
|
|
8
|
+
exports.getOAuthConfig = getOAuthConfig;
|
|
7
9
|
/**
|
|
8
10
|
* 构建完整的 OAuth API 基础 URL
|
|
9
11
|
* 将 OAUTH_ENDPOINT 补全为 {endpoint}/api/oauth 的格式
|
|
@@ -13,10 +15,16 @@ function buildBaseUrl(endpoint) {
|
|
|
13
15
|
? endpoint
|
|
14
16
|
: `${endpoint.endsWith('/api') ? endpoint : `${endpoint}/api`}/oauth`;
|
|
15
17
|
}
|
|
18
|
+
// 缓存的配置对象
|
|
19
|
+
let oauthConfig = null;
|
|
16
20
|
/**
|
|
17
|
-
*
|
|
21
|
+
* 初始化 OAuth 配置
|
|
22
|
+
* 验证环境变量并创建配置对象
|
|
23
|
+
* 必须在应用启动时调用,且要在 dotenv 加载之后
|
|
24
|
+
*
|
|
25
|
+
* @throws 当缺少必需的环境变量时抛出错误
|
|
18
26
|
*/
|
|
19
|
-
function
|
|
27
|
+
function initializeOAuthConfig() {
|
|
20
28
|
const itsEndpoint = process.env.OAUTH_ENDPOINT;
|
|
21
29
|
const itsClientId = process.env.OAUTH_CLIENT_KEY;
|
|
22
30
|
const itsClientSecret = process.env.OAUTH_CLIENT_SECRET;
|
|
@@ -31,7 +39,7 @@ function createOAuthConfig() {
|
|
|
31
39
|
if (!itsClientCallback) {
|
|
32
40
|
throw new Error('缺少 OAUTH_REDIRECT_URI 环境变量配置(回调地址)');
|
|
33
41
|
}
|
|
34
|
-
|
|
42
|
+
oauthConfig = {
|
|
35
43
|
endpoint: itsEndpoint,
|
|
36
44
|
baseUrl: buildBaseUrl(itsEndpoint),
|
|
37
45
|
clientKey: itsClientId,
|
|
@@ -40,6 +48,16 @@ function createOAuthConfig() {
|
|
|
40
48
|
itsEndpoint: itsEndpoint
|
|
41
49
|
};
|
|
42
50
|
}
|
|
43
|
-
|
|
44
|
-
|
|
51
|
+
/**
|
|
52
|
+
* 获取 OAuth 配置
|
|
53
|
+
* 必须在 initializeOAuthConfig 调用后使用
|
|
54
|
+
*
|
|
55
|
+
* @throws 当未调用 initializeOAuthConfig 时抛出错误
|
|
56
|
+
*/
|
|
57
|
+
function getOAuthConfig() {
|
|
58
|
+
if (!oauthConfig) {
|
|
59
|
+
throw new Error('OAuth 配置未初始化,请先调用 initializeOAuthConfig()');
|
|
60
|
+
}
|
|
61
|
+
return oauthConfig;
|
|
62
|
+
}
|
|
45
63
|
//# sourceMappingURL=config.js.map
|
|
@@ -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;;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"}
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* - Authorization header: Basic Auth (client_key:client_secret)
|
|
7
7
|
*/
|
|
8
8
|
import { AxiosInstance } from 'axios';
|
|
9
|
-
declare const
|
|
10
|
-
export default
|
|
9
|
+
declare const _default: AxiosInstance;
|
|
10
|
+
export default _default;
|
|
11
11
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -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
|
|
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;;AA0C5C,wBAA8B"}
|
|
@@ -11,7 +11,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
const axios_1 = __importDefault(require("axios"));
|
|
14
|
-
const config_1 =
|
|
14
|
+
const config_1 = require("./config");
|
|
15
|
+
let httpClient = null;
|
|
15
16
|
/**
|
|
16
17
|
* 创建 OAuth HTTP 客户端实例
|
|
17
18
|
*
|
|
@@ -19,19 +20,28 @@ const config_1 = __importDefault(require("./config"));
|
|
|
19
20
|
* @throws 当环境变量缺失时抛出错误
|
|
20
21
|
*/
|
|
21
22
|
function createOAuthHttpClient() {
|
|
23
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
22
24
|
// 生成 Basic Auth header
|
|
23
|
-
const authHeader = Buffer.from(`${
|
|
25
|
+
const authHeader = Buffer.from(`${oauthConfig.clientKey}:${oauthConfig.clientSecret}`).toString('base64');
|
|
24
26
|
// 创建 axios 实例
|
|
25
|
-
const
|
|
26
|
-
baseURL:
|
|
27
|
+
const client = axios_1.default.create({
|
|
28
|
+
baseURL: oauthConfig.baseUrl,
|
|
27
29
|
timeout: 10000,
|
|
28
30
|
headers: {
|
|
29
31
|
Authorization: `Basic ${authHeader}`
|
|
30
32
|
}
|
|
31
33
|
});
|
|
34
|
+
return client;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 获取 HTTP 客户端实例
|
|
38
|
+
* 延迟初始化,确保配置已加载
|
|
39
|
+
*/
|
|
40
|
+
function getHttpClient() {
|
|
41
|
+
if (!httpClient) {
|
|
42
|
+
httpClient = createOAuthHttpClient();
|
|
43
|
+
}
|
|
32
44
|
return httpClient;
|
|
33
45
|
}
|
|
34
|
-
|
|
35
|
-
const httpClient = createOAuthHttpClient();
|
|
36
|
-
exports.default = httpClient;
|
|
46
|
+
exports.default = getHttpClient();
|
|
37
47
|
//# sourceMappingURL=http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,kDAA4C;AAC5C,
|
|
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,EAAE,CAAA"}
|