@enterprisestandard/esv 0.0.5-beta.20260115.1 → 0.0.5-beta.20260115.2
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/iam/index.js +664 -5500
- package/dist/iam/index.js.map +1 -23
- package/dist/index.js +156 -6554
- package/dist/index.js.map +1 -27
- package/dist/runner.js +280 -10928
- package/dist/runner.js.map +1 -33
- package/dist/server/crypto.js +134 -0
- package/dist/server/crypto.js.map +1 -0
- package/dist/server/iam.js +402 -0
- package/dist/server/iam.js.map +1 -0
- package/dist/server/index.js +34 -1380
- package/dist/server/index.js.map +1 -16
- package/dist/server/server.js +223 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/sso.js +428 -0
- package/dist/server/sso.js.map +1 -0
- package/dist/server/state.js +152 -0
- package/dist/server/state.js.map +1 -0
- package/dist/server/vault.js +92 -0
- package/dist/server/vault.js.map +1 -0
- package/dist/server/workload.js +226 -0
- package/dist/server/workload.js.map +1 -0
- package/dist/sso/index.js +355 -428
- package/dist/sso/index.js.map +1 -11
- package/dist/tenant/index.js +300 -0
- package/dist/tenant/index.js.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +139 -0
- package/dist/utils.js.map +1 -0
- package/dist/workload/index.js +404 -474
- package/dist/workload/index.js.map +1 -11
- package/package.json +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault endpoint handlers for the ESV mock server
|
|
3
|
+
*
|
|
4
|
+
* Provides configuration secrets for SSO, IAM, and Workload services.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default ESV configuration returned by the vault
|
|
8
|
+
*/
|
|
9
|
+
function getEsvConfig(baseUrl = 'http://localhost:3555') {
|
|
10
|
+
return {
|
|
11
|
+
sso: {
|
|
12
|
+
authority: `${baseUrl}/sso`,
|
|
13
|
+
token_url: `${baseUrl}/sso/token`,
|
|
14
|
+
authorization_url: `${baseUrl}/sso/authorize`,
|
|
15
|
+
jwks_uri: `${baseUrl}/sso/certs`,
|
|
16
|
+
client_id: 'local-test-client',
|
|
17
|
+
client_secret: 'local-test-secret',
|
|
18
|
+
redirect_uri: 'http://localhost:3000/api/auth/callback',
|
|
19
|
+
scope: 'openid profile email',
|
|
20
|
+
revocation_endpoint: `${baseUrl}/sso/revoke`,
|
|
21
|
+
end_session_endpoint: `${baseUrl}/sso/logout`,
|
|
22
|
+
},
|
|
23
|
+
iam: {
|
|
24
|
+
url: `${baseUrl}/iam`,
|
|
25
|
+
// Note: The ESV server handles SCIM at /iam/Users and /iam/Groups
|
|
26
|
+
// The url should point to the base IAM endpoint, not /scim/v2
|
|
27
|
+
},
|
|
28
|
+
workload: {
|
|
29
|
+
token_url: `${baseUrl}/workload/token`,
|
|
30
|
+
jwks_uri: `${baseUrl}/workload/certs`,
|
|
31
|
+
client_id: 'local-workload-client',
|
|
32
|
+
client_secret: 'local-workload-secret',
|
|
33
|
+
issuer: `${baseUrl}/workload`,
|
|
34
|
+
audience: `${baseUrl}/workload`,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Handle vault requests
|
|
40
|
+
*/
|
|
41
|
+
export function handleVaultRequest(req, res, pathname) {
|
|
42
|
+
// Remove /vault prefix
|
|
43
|
+
const vaultPath = pathname.replace(/^\/vault/, '');
|
|
44
|
+
// Handle GET /vault/v1/secret/data/esv/config
|
|
45
|
+
if (req.method === 'GET' && vaultPath === '/v1/secret/data/esv/config') {
|
|
46
|
+
// Verify vault token
|
|
47
|
+
const token = req.headers['x-vault-token'];
|
|
48
|
+
if (token !== 'local-esv-token') {
|
|
49
|
+
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
50
|
+
res.end(JSON.stringify({ errors: ['permission denied'] }));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const config = getEsvConfig();
|
|
54
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
55
|
+
res.end(JSON.stringify({
|
|
56
|
+
request_id: 'local-esv-request',
|
|
57
|
+
lease_id: '',
|
|
58
|
+
renewable: false,
|
|
59
|
+
lease_duration: 0,
|
|
60
|
+
data: {
|
|
61
|
+
data: config,
|
|
62
|
+
metadata: {
|
|
63
|
+
created_time: new Date().toISOString(),
|
|
64
|
+
deletion_time: '',
|
|
65
|
+
destroyed: false,
|
|
66
|
+
version: 1,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
wrap_info: null,
|
|
70
|
+
warnings: null,
|
|
71
|
+
auth: null,
|
|
72
|
+
}));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Handle GET /vault/v1/secret/data/* for other secrets
|
|
76
|
+
if (req.method === 'GET' && vaultPath.startsWith('/v1/secret/data/')) {
|
|
77
|
+
const token = req.headers['x-vault-token'];
|
|
78
|
+
if (token !== 'local-esv-token') {
|
|
79
|
+
res.writeHead(403, { 'Content-Type': 'application/json' });
|
|
80
|
+
res.end(JSON.stringify({ errors: ['permission denied'] }));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Return empty secret for unknown paths
|
|
84
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
85
|
+
res.end(JSON.stringify({ errors: ['secret not found'] }));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// 404 for unknown vault paths
|
|
89
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
90
|
+
res.end(JSON.stringify({ errors: ['path not found'] }));
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/server/vault.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workload Identity endpoint handlers for the ESV mock server
|
|
3
|
+
*
|
|
4
|
+
* Implements OAuth2 client credentials and JWT bearer grant for workload identity.
|
|
5
|
+
*/
|
|
6
|
+
import { getJwks, signJwt, verifyJwt } from './crypto.js';
|
|
7
|
+
const ISSUER = 'http://localhost:3555/workload';
|
|
8
|
+
const TOKEN_EXPIRY = 3600; // 1 hour
|
|
9
|
+
// Valid client credentials for testing
|
|
10
|
+
const VALID_CLIENTS = {
|
|
11
|
+
'local-workload-client': 'local-workload-secret',
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Parse request body as URL-encoded form data
|
|
15
|
+
*/
|
|
16
|
+
async function parseFormBody(req) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
let body = '';
|
|
19
|
+
req.on('data', (chunk) => {
|
|
20
|
+
body += chunk.toString();
|
|
21
|
+
});
|
|
22
|
+
req.on('end', () => {
|
|
23
|
+
resolve(new URLSearchParams(body));
|
|
24
|
+
});
|
|
25
|
+
req.on('error', reject);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Handle workload requests
|
|
30
|
+
*/
|
|
31
|
+
export async function handleWorkloadRequest(req, res, pathname) {
|
|
32
|
+
// Remove /workload prefix
|
|
33
|
+
const workloadPath = pathname.replace(/^\/workload/, '');
|
|
34
|
+
// POST /workload/token - Token endpoint
|
|
35
|
+
if (req.method === 'POST' && workloadPath === '/token') {
|
|
36
|
+
await handleToken(req, res);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// GET /workload/certs - JWKS endpoint
|
|
40
|
+
if (req.method === 'GET' && workloadPath === '/certs') {
|
|
41
|
+
handleCerts(res);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// POST /workload/validate - Token validation endpoint (for testing)
|
|
45
|
+
if (req.method === 'POST' && workloadPath === '/validate') {
|
|
46
|
+
handleValidate(req, res);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
50
|
+
res.end(JSON.stringify({ error: 'not_found' }));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Token endpoint - issues access tokens for client credentials or JWT bearer
|
|
54
|
+
*/
|
|
55
|
+
async function handleToken(req, res) {
|
|
56
|
+
const body = await parseFormBody(req);
|
|
57
|
+
const grantType = body.get('grant_type');
|
|
58
|
+
if (grantType === 'client_credentials') {
|
|
59
|
+
handleClientCredentials(body, res);
|
|
60
|
+
}
|
|
61
|
+
else if (grantType === 'urn:ietf:params:oauth:grant-type:jwt-bearer') {
|
|
62
|
+
handleJwtBearer(body, res);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
66
|
+
res.end(JSON.stringify({
|
|
67
|
+
error: 'unsupported_grant_type',
|
|
68
|
+
error_description: 'Only client_credentials and jwt-bearer are supported',
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Handle client credentials grant
|
|
74
|
+
*/
|
|
75
|
+
function handleClientCredentials(body, res) {
|
|
76
|
+
const clientId = body.get('client_id');
|
|
77
|
+
const clientSecret = body.get('client_secret');
|
|
78
|
+
const scope = body.get('scope') || '';
|
|
79
|
+
if (!clientId || !clientSecret) {
|
|
80
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
81
|
+
res.end(JSON.stringify({
|
|
82
|
+
error: 'invalid_request',
|
|
83
|
+
error_description: 'Missing client_id or client_secret',
|
|
84
|
+
}));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Validate credentials
|
|
88
|
+
const expectedSecret = VALID_CLIENTS[clientId];
|
|
89
|
+
if (!expectedSecret || expectedSecret !== clientSecret) {
|
|
90
|
+
res.writeHead(401, { 'Content-Type': 'application/json' });
|
|
91
|
+
res.end(JSON.stringify({
|
|
92
|
+
error: 'invalid_client',
|
|
93
|
+
error_description: 'Invalid client credentials',
|
|
94
|
+
}));
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// Generate access token
|
|
98
|
+
const accessTokenClaims = {
|
|
99
|
+
iss: ISSUER,
|
|
100
|
+
sub: clientId,
|
|
101
|
+
aud: ISSUER,
|
|
102
|
+
client_id: clientId,
|
|
103
|
+
scope,
|
|
104
|
+
};
|
|
105
|
+
const accessToken = signJwt(accessTokenClaims, TOKEN_EXPIRY);
|
|
106
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
107
|
+
res.end(JSON.stringify({
|
|
108
|
+
access_token: accessToken,
|
|
109
|
+
token_type: 'Bearer',
|
|
110
|
+
expires_in: TOKEN_EXPIRY,
|
|
111
|
+
scope,
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Handle JWT bearer grant
|
|
116
|
+
*/
|
|
117
|
+
function handleJwtBearer(body, res) {
|
|
118
|
+
const assertion = body.get('assertion');
|
|
119
|
+
const scope = body.get('scope') || '';
|
|
120
|
+
if (!assertion) {
|
|
121
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
122
|
+
res.end(JSON.stringify({
|
|
123
|
+
error: 'invalid_request',
|
|
124
|
+
error_description: 'Missing assertion',
|
|
125
|
+
}));
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// Verify the JWT assertion
|
|
129
|
+
const result = verifyJwt(assertion);
|
|
130
|
+
if (!result.valid) {
|
|
131
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
132
|
+
res.end(JSON.stringify({
|
|
133
|
+
error: 'invalid_grant',
|
|
134
|
+
error_description: result.error || 'Invalid JWT assertion',
|
|
135
|
+
}));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// Extract workload ID from assertion
|
|
139
|
+
const workloadId = result.payload?.sub;
|
|
140
|
+
// Generate access token
|
|
141
|
+
const accessTokenClaims = {
|
|
142
|
+
iss: ISSUER,
|
|
143
|
+
sub: workloadId,
|
|
144
|
+
aud: ISSUER,
|
|
145
|
+
workload_id: workloadId,
|
|
146
|
+
scope: scope || result.payload?.scope || '',
|
|
147
|
+
};
|
|
148
|
+
const accessToken = signJwt(accessTokenClaims, TOKEN_EXPIRY);
|
|
149
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
150
|
+
res.end(JSON.stringify({
|
|
151
|
+
access_token: accessToken,
|
|
152
|
+
token_type: 'Bearer',
|
|
153
|
+
expires_in: TOKEN_EXPIRY,
|
|
154
|
+
scope: accessTokenClaims.scope,
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* JWKS endpoint
|
|
159
|
+
*/
|
|
160
|
+
function handleCerts(res) {
|
|
161
|
+
const jwks = getJwks();
|
|
162
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
163
|
+
res.end(JSON.stringify(jwks));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Token validation endpoint (for testing)
|
|
167
|
+
*/
|
|
168
|
+
function handleValidate(req, res) {
|
|
169
|
+
const authHeader = req.headers.authorization;
|
|
170
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
171
|
+
res.writeHead(401, { 'Content-Type': 'application/json' });
|
|
172
|
+
res.end(JSON.stringify({
|
|
173
|
+
valid: false,
|
|
174
|
+
error: 'Missing Authorization header',
|
|
175
|
+
}));
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const token = authHeader.substring(7);
|
|
179
|
+
const result = verifyJwt(token);
|
|
180
|
+
if (!result.valid) {
|
|
181
|
+
res.writeHead(401, { 'Content-Type': 'application/json' });
|
|
182
|
+
res.end(JSON.stringify({
|
|
183
|
+
valid: false,
|
|
184
|
+
error: result.error,
|
|
185
|
+
}));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
189
|
+
res.end(JSON.stringify({
|
|
190
|
+
valid: true,
|
|
191
|
+
claims: result.payload,
|
|
192
|
+
expiresAt: result.payload?.exp ? new Date(result.payload.exp * 1000).toISOString() : undefined,
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Mock /api/whoami endpoint for testing workload authentication
|
|
197
|
+
*
|
|
198
|
+
* This endpoint validates workload tokens and returns the workload identity,
|
|
199
|
+
* allowing applications to be tested independently without requiring
|
|
200
|
+
* another application to be running.
|
|
201
|
+
*/
|
|
202
|
+
export function handleWhoamiRequest(req, res) {
|
|
203
|
+
const authHeader = req.headers.authorization;
|
|
204
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
205
|
+
res.writeHead(401, { 'Content-Type': 'application/json' });
|
|
206
|
+
res.end(JSON.stringify({ error: 'Unauthorized' }));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const token = authHeader.substring(7);
|
|
210
|
+
const result = verifyJwt(token);
|
|
211
|
+
if (!result.valid) {
|
|
212
|
+
res.writeHead(401, { 'Content-Type': 'application/json' });
|
|
213
|
+
res.end(JSON.stringify({ error: 'Invalid token', details: result.error }));
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
217
|
+
res.end(JSON.stringify({
|
|
218
|
+
user: null,
|
|
219
|
+
workload: {
|
|
220
|
+
workload_id: result.payload?.sub,
|
|
221
|
+
client_id: result.payload?.client_id,
|
|
222
|
+
scope: result.payload?.scope,
|
|
223
|
+
},
|
|
224
|
+
}));
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=workload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workload.js","sourceRoot":"","sources":["../../src/server/workload.ts"],"names":[],"mappings":"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"}
|