fa-mcp-sdk 0.4.27 → 0.4.30
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/README.md +5 -1
- package/bin/fa-mcp.js +1 -1
- package/cli-template/.claude/skills/gen-jwt/SKILL.md +113 -0
- package/cli-template/CLAUDE.md +14 -0
- package/cli-template/FA-MCP-SDK-DOC/00-FA-MCP-SDK-index.md +1 -1
- package/cli-template/FA-MCP-SDK-DOC/04-authentication.md +123 -0
- package/cli-template/package.json +1 -1
- package/config/_local.yaml +12 -0
- package/config/custom-environment-variables.yaml +1 -0
- package/config/default.yaml +12 -0
- package/config/local.yaml +7 -18
- package/dist/core/_types_/config.d.ts +3 -1
- package/dist/core/_types_/config.d.ts.map +1 -1
- package/dist/core/auth/admin-auth.d.ts +12 -1
- package/dist/core/auth/admin-auth.d.ts.map +1 -1
- package/dist/core/auth/admin-auth.js +124 -64
- package/dist/core/auth/admin-auth.js.map +1 -1
- package/dist/core/bootstrap/startup-info.d.ts.map +1 -1
- package/dist/core/bootstrap/startup-info.js +1 -0
- package/dist/core/bootstrap/startup-info.js.map +1 -1
- package/dist/core/web/admin-router.d.ts.map +1 -1
- package/dist/core/web/admin-router.js +34 -25
- package/dist/core/web/admin-router.js.map +1 -1
- package/dist/core/web/server-http.d.ts.map +1 -1
- package/dist/core/web/server-http.js +71 -0
- package/dist/core/web/server-http.js.map +1 -1
- package/dist/core/web/static/agent-tester/index.html +8 -3
- package/dist/core/web/static/agent-tester/script.js +59 -15
- package/dist/core/web/static/agent-tester/styles.css +27 -1
- package/dist/core/web/static/styles.css +30 -0
- package/dist/core/web/static/token-gen/index.html +24 -2
- package/dist/core/web/static/token-gen/script.js +171 -34
- package/package.json +1 -1
- package/scripts/generate-jwt.js +191 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Admin panel authentication middleware
|
|
3
3
|
* Supports 4 authentication types: permanentServerTokens, basic, jwtToken, ntlm
|
|
4
|
+
* adminAuth.type accepts a single type or an array of types
|
|
4
5
|
*/
|
|
5
6
|
import chalk from 'chalk';
|
|
6
7
|
import { appConfig } from '../bootstrap/init-config.js';
|
|
@@ -14,41 +15,43 @@ import { setupNTLMAuthentication } from './token-generator/ntlm/ntlm-integration
|
|
|
14
15
|
const logger = lgr.getSubLogger({ name: chalk.yellow('admin-auth') });
|
|
15
16
|
const { adminAuth, auth } = appConfig.webServer || {};
|
|
16
17
|
/**
|
|
17
|
-
*
|
|
18
|
-
* Returns error message if configuration is invalid, null if valid
|
|
18
|
+
* Normalizes adminAuth.type to an array
|
|
19
19
|
*/
|
|
20
|
-
export function
|
|
21
|
-
if (!adminAuth?.
|
|
22
|
-
return
|
|
20
|
+
export function getAdminAuthTypes() {
|
|
21
|
+
if (!adminAuth?.type) {
|
|
22
|
+
return [];
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
return Array.isArray(adminAuth.type) ? adminAuth.type : [adminAuth.type];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validates admin auth configuration for a single type
|
|
28
|
+
*/
|
|
29
|
+
function validateSingleAuthType(authType) {
|
|
25
30
|
switch (authType) {
|
|
26
31
|
case 'permanentServerTokens': {
|
|
27
32
|
const tokens = auth?.permanentServerTokens;
|
|
28
33
|
if (!Array.isArray(tokens) || !tokens.filter(Boolean).length) {
|
|
29
|
-
return
|
|
34
|
+
return `adminAuth type "${authType}" but no tokens are configured in webServer.auth.permanentServerTokens`;
|
|
30
35
|
}
|
|
31
36
|
break;
|
|
32
37
|
}
|
|
33
38
|
case 'basic': {
|
|
34
39
|
const basic = auth?.basic;
|
|
35
40
|
if (!basic?.username || !basic?.password) {
|
|
36
|
-
return
|
|
41
|
+
return `adminAuth type "${authType}" but username or password is missing in webServer.auth.basic`;
|
|
37
42
|
}
|
|
38
43
|
break;
|
|
39
44
|
}
|
|
40
45
|
case 'jwtToken': {
|
|
41
46
|
const jwt = auth?.jwtToken;
|
|
42
47
|
if (!jwt?.encryptKey || jwt.encryptKey.length < 8) {
|
|
43
|
-
return
|
|
48
|
+
return `adminAuth type "${authType}" but encryptKey is missing or too short in webServer.auth.jwtToken`;
|
|
44
49
|
}
|
|
45
50
|
break;
|
|
46
51
|
}
|
|
47
52
|
case 'ntlm': {
|
|
48
|
-
// NTLM doesn't require credentials in webServer.auth, just AD config
|
|
49
|
-
// The isNTLMEnabled function checks for AD configuration
|
|
50
53
|
if (!isNTLMEnabled) {
|
|
51
|
-
return
|
|
54
|
+
return `adminAuth type "${authType}" but no AD configuration found (ad.domains is empty or missing)`;
|
|
52
55
|
}
|
|
53
56
|
break;
|
|
54
57
|
}
|
|
@@ -57,6 +60,81 @@ export function validateAdminAuthConfig() {
|
|
|
57
60
|
}
|
|
58
61
|
return null;
|
|
59
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Validates admin auth configuration
|
|
65
|
+
* Returns error message if configuration is invalid, null if valid
|
|
66
|
+
*/
|
|
67
|
+
export function validateAdminAuthConfig() {
|
|
68
|
+
if (!adminAuth?.enabled) {
|
|
69
|
+
return null; // Disabled, no validation needed
|
|
70
|
+
}
|
|
71
|
+
const types = getAdminAuthTypes();
|
|
72
|
+
if (types.length === 0) {
|
|
73
|
+
return 'adminAuth is enabled but no type is configured';
|
|
74
|
+
}
|
|
75
|
+
for (const t of types) {
|
|
76
|
+
const error = validateSingleAuthType(t);
|
|
77
|
+
if (error) {
|
|
78
|
+
return error;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns the list of auth methods available for the admin login UI.
|
|
85
|
+
* Maps auth types to UI categories: 'token' (permanentServerTokens, jwtToken) or 'basic'.
|
|
86
|
+
*/
|
|
87
|
+
export function getAdminAuthMethods() {
|
|
88
|
+
if (!adminAuth?.enabled) {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
const types = getAdminAuthTypes();
|
|
92
|
+
const methods = [];
|
|
93
|
+
for (const t of types) {
|
|
94
|
+
if (t === 'permanentServerTokens' || t === 'jwtToken') {
|
|
95
|
+
methods.push('token');
|
|
96
|
+
}
|
|
97
|
+
else if (t === 'basic') {
|
|
98
|
+
methods.push('basic');
|
|
99
|
+
}
|
|
100
|
+
// ntlm is handled by browser-native dialog, not by the login modal
|
|
101
|
+
}
|
|
102
|
+
return [...new Set(methods)];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Try authenticating a request against a single auth type.
|
|
106
|
+
* Returns auth result or null if this type doesn't match the request.
|
|
107
|
+
*/
|
|
108
|
+
function tryAuthType(authType, scheme, credentials) {
|
|
109
|
+
switch (authType) {
|
|
110
|
+
case 'permanentServerTokens': {
|
|
111
|
+
if (scheme === 'basic') {
|
|
112
|
+
return null;
|
|
113
|
+
} // Not a bearer/token
|
|
114
|
+
const result = checkPermanentToken(credentials);
|
|
115
|
+
return result.errorReason
|
|
116
|
+
? { success: false, error: result.errorReason }
|
|
117
|
+
: { success: true, username: 'ServerToken' };
|
|
118
|
+
}
|
|
119
|
+
case 'basic': {
|
|
120
|
+
if (scheme !== 'basic') {
|
|
121
|
+
return null;
|
|
122
|
+
} // Not basic auth
|
|
123
|
+
return checkBasicAuth(credentials);
|
|
124
|
+
}
|
|
125
|
+
case 'jwtToken': {
|
|
126
|
+
if (scheme === 'basic') {
|
|
127
|
+
return null;
|
|
128
|
+
} // Not a bearer/token
|
|
129
|
+
const result = checkJwtToken({ token: credentials });
|
|
130
|
+
return result.errorReason
|
|
131
|
+
? { success: false, error: result.errorReason }
|
|
132
|
+
: { success: true, username: result.payload?.user || 'JWT User', payload: result.payload };
|
|
133
|
+
}
|
|
134
|
+
default:
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
60
138
|
/**
|
|
61
139
|
* Creates admin authentication middleware based on adminAuth.type config
|
|
62
140
|
*/
|
|
@@ -74,13 +152,14 @@ export function createAdminAuthMW() {
|
|
|
74
152
|
next();
|
|
75
153
|
}];
|
|
76
154
|
}
|
|
77
|
-
const
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
if (authType === 'ntlm') {
|
|
155
|
+
const types = getAdminAuthTypes();
|
|
156
|
+
// If the only type is NTLM, use existing NTLM middleware
|
|
157
|
+
if (types.length === 1 && types[0] === 'ntlm') {
|
|
81
158
|
return setupNTLMAuthentication();
|
|
82
159
|
}
|
|
83
|
-
//
|
|
160
|
+
// Filter out ntlm from the types that can be handled by the standard middleware
|
|
161
|
+
const standardTypes = types.filter((t) => t !== 'ntlm');
|
|
162
|
+
// For standard auth types, create middleware
|
|
84
163
|
return [
|
|
85
164
|
(req, res, next) => {
|
|
86
165
|
// Set default NTLM info for compatibility with token-generator templates
|
|
@@ -92,64 +171,45 @@ export function createAdminAuthMW() {
|
|
|
92
171
|
const { scheme, credentials } = getTokenFromHttpHeader(req);
|
|
93
172
|
// If no credentials provided, request authentication
|
|
94
173
|
if (!credentials) {
|
|
95
|
-
return sendAuthRequired(res,
|
|
174
|
+
return sendAuthRequired(res, standardTypes);
|
|
96
175
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return sendAuthRequired(res, authType, 'Basic authentication required');
|
|
176
|
+
// Try each configured auth type in order
|
|
177
|
+
for (const authType of standardTypes) {
|
|
178
|
+
const result = tryAuthType(authType, scheme || '', credentials);
|
|
179
|
+
if (result && result.success) {
|
|
180
|
+
req.ntlm = {
|
|
181
|
+
isAuthenticated: true,
|
|
182
|
+
username: result.username || 'Authenticated',
|
|
183
|
+
domain: authType,
|
|
184
|
+
};
|
|
185
|
+
if (result.payload) {
|
|
186
|
+
req.authPayload = result.payload;
|
|
109
187
|
}
|
|
110
|
-
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
case 'jwtToken': {
|
|
114
|
-
const result = checkJwtToken({ token: credentials });
|
|
115
|
-
authResult = result.errorReason
|
|
116
|
-
? { success: false, error: result.errorReason }
|
|
117
|
-
: { success: true, username: result.payload?.user || 'JWT User', payload: result.payload };
|
|
118
|
-
break;
|
|
188
|
+
return next();
|
|
119
189
|
}
|
|
120
|
-
default:
|
|
121
|
-
authResult = { success: false, error: `Unknown auth type: ${authType}` };
|
|
122
190
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return sendAuthRequired(res, authType, authResult.error);
|
|
126
|
-
}
|
|
127
|
-
// Set authenticated user info
|
|
128
|
-
req.ntlm = {
|
|
129
|
-
isAuthenticated: true,
|
|
130
|
-
username: authResult.username || 'Authenticated',
|
|
131
|
-
domain: authType,
|
|
132
|
-
};
|
|
133
|
-
if (authResult.payload) {
|
|
134
|
-
req.authPayload = authResult.payload;
|
|
135
|
-
}
|
|
136
|
-
next();
|
|
191
|
+
logger.debug('Admin auth failed: no matching auth type');
|
|
192
|
+
return sendAuthRequired(res, standardTypes, 'Authentication failed');
|
|
137
193
|
},
|
|
138
194
|
];
|
|
139
195
|
}
|
|
140
196
|
/**
|
|
141
197
|
* Send authentication required response
|
|
142
198
|
*/
|
|
143
|
-
function sendAuthRequired(res,
|
|
199
|
+
function sendAuthRequired(res, authTypes, message) {
|
|
144
200
|
const errorMessage = message || 'Authentication required';
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
201
|
+
const hasBasic = authTypes.includes('basic');
|
|
202
|
+
const hasBearer = authTypes.includes('permanentServerTokens') || authTypes.includes('jwtToken');
|
|
203
|
+
// Set WWW-Authenticate headers for each supported scheme
|
|
204
|
+
const challenges = [];
|
|
205
|
+
if (hasBearer) {
|
|
206
|
+
challenges.push('Bearer realm="Admin Panel"');
|
|
207
|
+
}
|
|
208
|
+
if (hasBasic) {
|
|
209
|
+
challenges.push('Basic realm="Admin Panel"');
|
|
210
|
+
}
|
|
211
|
+
if (challenges.length) {
|
|
212
|
+
res.setHeader('WWW-Authenticate', challenges.join(', '));
|
|
153
213
|
}
|
|
154
214
|
res.status(401).json({
|
|
155
215
|
success: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-auth.js","sourceRoot":"","sources":["../../../src/core/auth/admin-auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"admin-auth.js","sourceRoot":"","sources":["../../../src/core/auth/admin-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-info.d.ts","sourceRoot":"","sources":["../../../src/core/bootstrap/startup-info.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,WAAW,GAAU,MAAM;IACtC,YAAY,EAAE,GAAG,CAAC;IAClB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;CACpD,
|
|
1
|
+
{"version":3,"file":"startup-info.d.ts","sourceRoot":"","sources":["../../../src/core/bootstrap/startup-info.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,WAAW,GAAU,MAAM;IACtC,YAAY,EAAE,GAAG,CAAC;IAClB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;CACpD,kBAiEA,CAAC"}
|
|
@@ -54,6 +54,7 @@ export const startupInfo = async (args) => {
|
|
|
54
54
|
...dbInfo,
|
|
55
55
|
['MCP Auth', mcpAuthInfo],
|
|
56
56
|
['Admin Auth', adminAuthInfo],
|
|
57
|
+
['Gen JWT API', cfg.webServer?.genJwtApiEnable ? 'POST /gen-jwt' : 'disabled'],
|
|
57
58
|
...(args.customStartupInfo || []),
|
|
58
59
|
consulInfoItem,
|
|
59
60
|
].filter(Boolean);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-info.js","sourceRoot":"","sources":["../../../src/core/bootstrap/startup-info.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"startup-info.js","sourceRoot":"","sources":["../../../src/core/bootstrap/startup-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-router.d.ts","sourceRoot":"","sources":["../../../src/core/web/admin-router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-router.d.ts","sourceRoot":"","sources":["../../../src/core/web/admin-router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAwFpD;;GAEG;AACH,wBAAgB,iBAAiB,IAAK,MAAM,CAkR3C"}
|
|
@@ -6,7 +6,7 @@ import { dirname, join } from 'path';
|
|
|
6
6
|
import { fileURLToPath } from 'url';
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import { Router } from 'express';
|
|
9
|
-
import { createAdminAuthMW } from '../auth/admin-auth.js';
|
|
9
|
+
import { createAdminAuthMW, getAdminAuthMethods, getAdminAuthTypes } from '../auth/admin-auth.js';
|
|
10
10
|
import { checkJwtToken, generateToken } from '../auth/jwt.js';
|
|
11
11
|
import { isNTLMEnabled } from '../auth/token-generator/ntlm/ntlm-domain-config.js';
|
|
12
12
|
import { getSessionStats } from '../auth/token-generator/ntlm/ntlm-session-storage.js';
|
|
@@ -26,10 +26,17 @@ const timeToSeconds = {
|
|
|
26
26
|
years: 60 * 60 * 24 * 365,
|
|
27
27
|
};
|
|
28
28
|
const { adminAuth } = appConfig.webServer || {};
|
|
29
|
-
const
|
|
30
|
-
const ntlmEnabled =
|
|
31
|
-
// Check if auth
|
|
32
|
-
|
|
29
|
+
const adminAuthTypes = adminAuth?.enabled === true ? getAdminAuthTypes() : [];
|
|
30
|
+
const ntlmEnabled = adminAuthTypes.includes('ntlm') && isNTLMEnabled;
|
|
31
|
+
// Check if auth requires Bearer token modal (handled by frontend)
|
|
32
|
+
// Bearer-only means all types are token-based (no basic, no ntlm)
|
|
33
|
+
const hasTokenAuth = adminAuthTypes.includes('permanentServerTokens') || adminAuthTypes.includes('jwtToken');
|
|
34
|
+
const hasBasicAuth = adminAuthTypes.includes('basic');
|
|
35
|
+
const hasNtlmAuth = adminAuthTypes.includes('ntlm') && isNTLMEnabled;
|
|
36
|
+
// The frontend handles auth when we have token-based or basic types (not ntlm-only)
|
|
37
|
+
const requiresFrontendAuth = (hasTokenAuth || hasBasicAuth) && !hasNtlmAuth;
|
|
38
|
+
// For backward compat: requiresBearerToken is true when only token-based types (no basic, no ntlm)
|
|
39
|
+
const requiresBearerToken = hasTokenAuth && !hasBasicAuth && !hasNtlmAuth;
|
|
33
40
|
/**
|
|
34
41
|
* Checks custom authorization for Token Generator access
|
|
35
42
|
* Returns null if authorized, or AuthResult with error if not
|
|
@@ -44,14 +51,14 @@ async function checkTokenGenAuthorization(req) {
|
|
|
44
51
|
// Build input based on auth type
|
|
45
52
|
const input = {
|
|
46
53
|
user: req.ntlm?.username || 'Unknown',
|
|
47
|
-
authType: (
|
|
54
|
+
authType: (adminAuthTypes[0] || 'permanentServerTokens'),
|
|
48
55
|
};
|
|
49
56
|
// Add domain for NTLM
|
|
50
|
-
if (
|
|
57
|
+
if (adminAuthTypes.includes('ntlm') && req.ntlm?.domain) {
|
|
51
58
|
input.domain = req.ntlm.domain;
|
|
52
59
|
}
|
|
53
60
|
// Add payload for JWT
|
|
54
|
-
if (
|
|
61
|
+
if (adminAuthTypes.includes('jwtToken')) {
|
|
55
62
|
input.payload = req.authPayload;
|
|
56
63
|
}
|
|
57
64
|
try {
|
|
@@ -78,24 +85,26 @@ export function createAdminRouter() {
|
|
|
78
85
|
// ============================
|
|
79
86
|
// PUBLIC ENDPOINTS (no auth required)
|
|
80
87
|
// ============================
|
|
81
|
-
// Public endpoint - auth config (frontend needs this to know
|
|
88
|
+
// Public endpoint - auth config (frontend needs this to know which login form to show)
|
|
82
89
|
router.get('/api/auth-config', (req, res) => {
|
|
83
90
|
res.json({
|
|
84
91
|
success: true,
|
|
85
|
-
authType:
|
|
92
|
+
authType: adminAuthTypes.length === 1 ? adminAuthTypes[0] : (adminAuthTypes.length ? adminAuthTypes : null),
|
|
86
93
|
requiresBearerToken,
|
|
94
|
+
requiresFrontendAuth,
|
|
95
|
+
methods: getAdminAuthMethods(),
|
|
87
96
|
timestamp: new Date().toISOString(),
|
|
88
97
|
});
|
|
89
98
|
});
|
|
90
|
-
// Main admin page - always serve HTML (auth is handled by frontend for
|
|
91
|
-
// For NTLM
|
|
92
|
-
if (
|
|
93
|
-
// For
|
|
99
|
+
// Main admin page - always serve HTML (auth is handled by frontend for token/basic)
|
|
100
|
+
// For NTLM-only - middleware will handle auth before this route
|
|
101
|
+
if (requiresFrontendAuth) {
|
|
102
|
+
// For frontend-handled auth: serve page without auth, frontend will handle modal
|
|
94
103
|
router.get('/', (req, res) => {
|
|
95
|
-
logger.info('Admin page accessed (
|
|
104
|
+
logger.info('Admin page accessed (frontend handles authentication)');
|
|
96
105
|
res.sendFile(join(staticPath, 'index.html'));
|
|
97
106
|
});
|
|
98
|
-
// Logout for
|
|
107
|
+
// Logout for frontend auth - just return success, frontend clears sessionStorage
|
|
99
108
|
router.get('/logout', (req, res) => {
|
|
100
109
|
res.setHeader('Clear-Site-Data', '"storage"');
|
|
101
110
|
return res.status(200).json({
|
|
@@ -111,8 +120,8 @@ export function createAdminRouter() {
|
|
|
111
120
|
const adminAuthMW = createAdminAuthMW();
|
|
112
121
|
router.use(adminAuthMW);
|
|
113
122
|
// Note: Static files (CSS, JS) are served globally at /static/token-gen/ by server-http.ts
|
|
114
|
-
// Main admin page - for NTLM
|
|
115
|
-
if (!
|
|
123
|
+
// Main admin page - for NTLM-only auth (middleware already authenticated)
|
|
124
|
+
if (!requiresFrontendAuth) {
|
|
116
125
|
router.get('/', (req, res) => {
|
|
117
126
|
const username = req.ntlm?.username || 'Unknown';
|
|
118
127
|
const domain = req.ntlm?.domain || 'Unknown';
|
|
@@ -123,7 +132,7 @@ export function createAdminRouter() {
|
|
|
123
132
|
// Logout for NTLM auth
|
|
124
133
|
router.get('/logout', (req, res) => {
|
|
125
134
|
logger.info(`Logout requested by: ${req.ntlm?.domain || 'Unknown'}\\${req.ntlm?.username || 'Unknown'}`);
|
|
126
|
-
if (
|
|
135
|
+
if (hasNtlmAuth) {
|
|
127
136
|
res.setHeader('WWW-Authenticate', 'NTLM');
|
|
128
137
|
res.setHeader('Clear-Site-Data', '"cookies", "storage"');
|
|
129
138
|
return res.status(401).send('Authentication required - please login again');
|
|
@@ -251,7 +260,7 @@ export function createAdminRouter() {
|
|
|
251
260
|
primaryColor: appConfig.uiColor.primary,
|
|
252
261
|
authenticatedUser: `${domain}\\${username}`,
|
|
253
262
|
isAuthenticated,
|
|
254
|
-
authType:
|
|
263
|
+
authType: adminAuthTypes.length === 1 ? adminAuthTypes[0] : adminAuthTypes,
|
|
255
264
|
ntlmEnabled,
|
|
256
265
|
timestamp: new Date().toISOString(),
|
|
257
266
|
});
|
|
@@ -264,7 +273,7 @@ export function createAdminRouter() {
|
|
|
264
273
|
success: false,
|
|
265
274
|
error: error.message,
|
|
266
275
|
serviceName: appConfig.name,
|
|
267
|
-
authType:
|
|
276
|
+
authType: adminAuthTypes.length === 1 ? adminAuthTypes[0] : adminAuthTypes,
|
|
268
277
|
ntlmEnabled,
|
|
269
278
|
});
|
|
270
279
|
}
|
|
@@ -276,11 +285,11 @@ export function createAdminRouter() {
|
|
|
276
285
|
const domain = req.ntlm?.domain || 'Unknown';
|
|
277
286
|
const isAuthenticated = req.ntlm?.isAuthenticated || false;
|
|
278
287
|
// Determine if logout is available (for all auth types except disabled)
|
|
279
|
-
const canLogout = isAuthenticated &&
|
|
288
|
+
const canLogout = isAuthenticated && adminAuthTypes.length > 0;
|
|
280
289
|
// Format user display based on auth type
|
|
281
290
|
let userDisplay = null;
|
|
282
291
|
if (isAuthenticated) {
|
|
283
|
-
if (
|
|
292
|
+
if (adminAuthTypes.includes('ntlm')) {
|
|
284
293
|
userDisplay = `${domain}\\${username}`;
|
|
285
294
|
}
|
|
286
295
|
else {
|
|
@@ -289,7 +298,7 @@ export function createAdminRouter() {
|
|
|
289
298
|
}
|
|
290
299
|
res.json({
|
|
291
300
|
success: true,
|
|
292
|
-
authType:
|
|
301
|
+
authType: adminAuthTypes.length === 1 ? adminAuthTypes[0] : (adminAuthTypes.length ? adminAuthTypes : null),
|
|
293
302
|
isAuthenticated,
|
|
294
303
|
user: userDisplay,
|
|
295
304
|
canLogout,
|
|
@@ -300,7 +309,7 @@ export function createAdminRouter() {
|
|
|
300
309
|
res.json({
|
|
301
310
|
success: false,
|
|
302
311
|
error: error.message,
|
|
303
|
-
authType:
|
|
312
|
+
authType: adminAuthTypes.length === 1 ? adminAuthTypes[0] : (adminAuthTypes.length ? adminAuthTypes : null),
|
|
304
313
|
});
|
|
305
314
|
}
|
|
306
315
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-router.js","sourceRoot":"","sources":["../../../src/core/web/admin-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-router.js","sourceRoot":"","sources":["../../../src/core/web/admin-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-http.d.ts","sourceRoot":"","sources":["../../../src/core/web/server-http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-http.d.ts","sourceRoot":"","sources":["../../../src/core/web/server-http.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,cAAc,SAA8B,CAAC;AAyC1D;;GAEG;AACH,wBAAsB,eAAe,IAAK,OAAO,CAAC,IAAI,CAAC,CA6iBtD"}
|
|
@@ -9,6 +9,7 @@ import { RateLimiterMemory } from 'rate-limiter-flexible';
|
|
|
9
9
|
import { createAgentTesterRouter } from '../agent-tester/agent-tester-router.js';
|
|
10
10
|
import { validateAdminAuthConfig } from '../auth/admin-auth.js';
|
|
11
11
|
import { createAgentTesterSessionMW } from '../auth/agent-tester-auth.js';
|
|
12
|
+
import { generateToken, MIN_ENCRYPT_KEY_LENGTH } from '../auth/jwt.js';
|
|
12
13
|
import { createAuthMW } from '../auth/middleware.js';
|
|
13
14
|
import { appConfig, getProjectData } from '../bootstrap/init-config.js';
|
|
14
15
|
import { getMainDBConnectionStatus } from '../db/pg-db.js';
|
|
@@ -145,6 +146,73 @@ export async function startHttpServer() {
|
|
|
145
146
|
const adminRouter = createAdminRouter();
|
|
146
147
|
app.use('/admin', adminRouter);
|
|
147
148
|
}
|
|
149
|
+
// JWT generation API endpoint
|
|
150
|
+
if (appConfig.webServer.genJwtApiEnable) {
|
|
151
|
+
const encryptKey = appConfig.webServer.auth?.jwtToken?.encryptKey;
|
|
152
|
+
if (!encryptKey || encryptKey.length < MIN_ENCRYPT_KEY_LENGTH || encryptKey === '***') {
|
|
153
|
+
logger.error('genJwtApiEnable is true but webServer.auth.jwtToken.encryptKey is not configured');
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
const TTL_MULTIPLIERS = { s: 1, m: 60, d: 86400, y: 31536000 };
|
|
157
|
+
app.post('/gen-jwt', authMW, (req, res) => {
|
|
158
|
+
try {
|
|
159
|
+
const { username, ttl, service, params } = req.body;
|
|
160
|
+
if (!username || !username.trim()) {
|
|
161
|
+
return res.status(400).json({ success: false, error: 'username is required' });
|
|
162
|
+
}
|
|
163
|
+
if (!ttl || !ttl.trim()) {
|
|
164
|
+
return res.status(400).json({ success: false, error: 'ttl is required. Format: <N>s | <N>m | <N>d | <N>y' });
|
|
165
|
+
}
|
|
166
|
+
const ttlMatch = /^(\d+)([smdy])$/.exec(ttl.trim());
|
|
167
|
+
if (!ttlMatch) {
|
|
168
|
+
return res.status(400).json({ success: false, error: `Invalid ttl format "${ttl}". Expected: <N>s | <N>m | <N>d | <N>y` });
|
|
169
|
+
}
|
|
170
|
+
const ttlValue = parseInt(ttlMatch[1], 10);
|
|
171
|
+
const ttlUnit = ttlMatch[2];
|
|
172
|
+
if (ttlValue <= 0) {
|
|
173
|
+
return res.status(400).json({ success: false, error: 'ttl value must be greater than 0' });
|
|
174
|
+
}
|
|
175
|
+
const liveTimeSec = ttlValue * TTL_MULTIPLIERS[ttlUnit];
|
|
176
|
+
// Build payload
|
|
177
|
+
const payload = {};
|
|
178
|
+
if (service && service.trim()) {
|
|
179
|
+
payload.service = service.trim();
|
|
180
|
+
}
|
|
181
|
+
// Parse params — string "key=value;key=value" or object
|
|
182
|
+
if (params) {
|
|
183
|
+
if (typeof params === 'string') {
|
|
184
|
+
for (const pair of params.split(';')) {
|
|
185
|
+
const eqIdx = pair.indexOf('=');
|
|
186
|
+
if (eqIdx > 0) {
|
|
187
|
+
const key = pair.substring(0, eqIdx).trim();
|
|
188
|
+
const value = pair.substring(eqIdx + 1).trim();
|
|
189
|
+
if (key) {
|
|
190
|
+
payload[key] = value;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else if (typeof params === 'object') {
|
|
196
|
+
Object.assign(payload, params);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const token = generateToken(username.trim(), liveTimeSec, payload);
|
|
200
|
+
const expire = Date.now() + (liveTimeSec * 1000);
|
|
201
|
+
return res.json({
|
|
202
|
+
success: true,
|
|
203
|
+
token,
|
|
204
|
+
user: username.trim().toLowerCase(),
|
|
205
|
+
expire: new Date(expire).toISOString(),
|
|
206
|
+
ttlSeconds: liveTimeSec,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
logger.error('Error generating JWT token:', error);
|
|
211
|
+
return res.status(500).json({ success: false, error: error.message });
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
148
216
|
const at = appConfig.agentTester;
|
|
149
217
|
// Agent Tester routes
|
|
150
218
|
if (at?.enabled) {
|
|
@@ -436,6 +504,9 @@ export async function startHttpServer() {
|
|
|
436
504
|
availableEndpoints.openapi = 'GET /api/openapi.json';
|
|
437
505
|
availableEndpoints.openapiYaml = 'GET /api/openapi.yaml';
|
|
438
506
|
}
|
|
507
|
+
if (appConfig.webServer.genJwtApiEnable) {
|
|
508
|
+
availableEndpoints.genJwt = 'POST /gen-jwt';
|
|
509
|
+
}
|
|
439
510
|
if (isAdminEnabled) {
|
|
440
511
|
availableEndpoints.admin = 'GET /admin';
|
|
441
512
|
}
|