@atlasauth/emulator-core 0.1.0 → 0.2.0

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.
Files changed (111) hide show
  1. package/dist/adopt.d.ts +50 -0
  2. package/dist/adopt.js +57 -0
  3. package/dist/adopt.js.map +1 -0
  4. package/dist/coverage.d.ts +15 -0
  5. package/dist/coverage.js +31 -0
  6. package/dist/coverage.js.map +1 -0
  7. package/dist/crypto-util.d.ts +10 -0
  8. package/dist/crypto-util.js +76 -0
  9. package/dist/crypto-util.js.map +1 -0
  10. package/dist/engine.d.ts +33 -2
  11. package/dist/engine.js +53 -8
  12. package/dist/engine.js.map +1 -1
  13. package/dist/error-catalog.js +8 -0
  14. package/dist/error-catalog.js.map +1 -1
  15. package/dist/event-gate.d.ts +3 -0
  16. package/dist/event-gate.js +372 -0
  17. package/dist/event-gate.js.map +1 -0
  18. package/dist/generic.js +9 -1
  19. package/dist/generic.js.map +1 -1
  20. package/dist/handlers/approvals.d.ts +2 -0
  21. package/dist/handlers/approvals.js +365 -0
  22. package/dist/handlers/approvals.js.map +1 -0
  23. package/dist/handlers/authz.d.ts +2 -0
  24. package/dist/handlers/authz.js +347 -0
  25. package/dist/handlers/authz.js.map +1 -0
  26. package/dist/handlers/billing.d.ts +2 -0
  27. package/dist/handlers/billing.js +398 -0
  28. package/dist/handlers/billing.js.map +1 -0
  29. package/dist/handlers/connections.d.ts +2 -0
  30. package/dist/handlers/connections.js +332 -0
  31. package/dist/handlers/connections.js.map +1 -0
  32. package/dist/handlers/device.d.ts +47 -0
  33. package/dist/handlers/device.js +648 -0
  34. package/dist/handlers/device.js.map +1 -0
  35. package/dist/handlers/federation.d.ts +2 -0
  36. package/dist/handlers/federation.js +481 -0
  37. package/dist/handlers/federation.js.map +1 -0
  38. package/dist/handlers/governance.d.ts +2 -0
  39. package/dist/handlers/governance.js +460 -0
  40. package/dist/handlers/governance.js.map +1 -0
  41. package/dist/handlers/hooks.js +4 -1
  42. package/dist/handlers/hooks.js.map +1 -1
  43. package/dist/handlers/index.d.ts +5 -1
  44. package/dist/handlers/index.js +32 -3
  45. package/dist/handlers/index.js.map +1 -1
  46. package/dist/handlers/keys.js +6 -1
  47. package/dist/handlers/keys.js.map +1 -1
  48. package/dist/handlers/machines.js +55 -8
  49. package/dist/handlers/machines.js.map +1 -1
  50. package/dist/handlers/messaging.d.ts +4 -0
  51. package/dist/handlers/messaging.js +486 -0
  52. package/dist/handlers/messaging.js.map +1 -0
  53. package/dist/handlers/oauth-flows.d.ts +28 -0
  54. package/dist/handlers/oauth-flows.js +419 -0
  55. package/dist/handlers/oauth-flows.js.map +1 -0
  56. package/dist/handlers/oauth.d.ts +75 -0
  57. package/dist/handlers/oauth.js +608 -0
  58. package/dist/handlers/oauth.js.map +1 -0
  59. package/dist/handlers/passkeys.d.ts +3 -0
  60. package/dist/handlers/passkeys.js +293 -0
  61. package/dist/handlers/passkeys.js.map +1 -0
  62. package/dist/handlers/platform.d.ts +15 -0
  63. package/dist/handlers/platform.js +454 -0
  64. package/dist/handlers/platform.js.map +1 -0
  65. package/dist/handlers/round2.d.ts +8 -0
  66. package/dist/handlers/round2.js +372 -0
  67. package/dist/handlers/round2.js.map +1 -0
  68. package/dist/handlers/scim.d.ts +2 -0
  69. package/dist/handlers/scim.js +408 -0
  70. package/dist/handlers/scim.js.map +1 -0
  71. package/dist/handlers/sessions.d.ts +7 -3
  72. package/dist/handlers/sessions.js +55 -25
  73. package/dist/handlers/sessions.js.map +1 -1
  74. package/dist/handlers/support.d.ts +20 -0
  75. package/dist/handlers/support.js +62 -0
  76. package/dist/handlers/support.js.map +1 -0
  77. package/dist/handlers/users.js +4 -0
  78. package/dist/handlers/users.js.map +1 -1
  79. package/dist/handlers/workflows.d.ts +2 -0
  80. package/dist/handlers/workflows.js +428 -0
  81. package/dist/handlers/workflows.js.map +1 -0
  82. package/dist/index.d.ts +8 -0
  83. package/dist/index.js +23 -1
  84. package/dist/index.js.map +1 -1
  85. package/dist/jws.d.ts +41 -0
  86. package/dist/jws.js +133 -0
  87. package/dist/jws.js.map +1 -0
  88. package/dist/messages.d.ts +7 -0
  89. package/dist/messages.js +8 -4
  90. package/dist/messages.js.map +1 -1
  91. package/dist/parity-bin.js +3 -1
  92. package/dist/parity-bin.js.map +1 -1
  93. package/dist/parity-routes.d.ts +14 -0
  94. package/dist/parity-routes.js +421 -0
  95. package/dist/parity-routes.js.map +1 -0
  96. package/dist/parity.d.ts +10 -3
  97. package/dist/parity.js +14 -5
  98. package/dist/parity.js.map +1 -1
  99. package/dist/tokens.d.ts +17 -0
  100. package/dist/tokens.js +46 -0
  101. package/dist/tokens.js.map +1 -1
  102. package/dist/webauthn-virtual.d.ts +70 -0
  103. package/dist/webauthn-virtual.js +186 -0
  104. package/dist/webauthn-virtual.js.map +1 -0
  105. package/dist/webhook-ext.d.ts +16 -0
  106. package/dist/webhook-ext.js +218 -0
  107. package/dist/webhook-ext.js.map +1 -0
  108. package/dist/webhooks.d.ts +3 -0
  109. package/dist/webhooks.js +37 -3
  110. package/dist/webhooks.js.map +1 -1
  111. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/handlers/device.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { RouteDef } from '../engine';
2
+ export declare function federationHandlers(): RouteDef[];
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.federationHandlers = federationHandlers;
4
+ const errors_1 = require("../errors");
5
+ const jws_1 = require("../jws");
6
+ const store_1 = require("../store");
7
+ const device_1 = require("./device");
8
+ const support_1 = require("./support");
9
+ const util_1 = require("./util");
10
+ /**
11
+ * Workload identity federation for machines: trust policies (`/v1/machine_trust_policies`) and the public exchange
12
+ * `POST /v1/machines/federate`. A GitHub Actions, Kubernetes, Google Cloud or generic OIDC token is verified against the
13
+ * issuer's keys (inline `jwks`, `jwks_uri`, or discovery through the engine's `fetch` option), its issuer, audience,
14
+ * expiry (24 h token age cap), subject pattern and claim conditions are checked, and a short machine token comes back.
15
+ * An AWS proof is a presigned STS GetCallerIdentity request, validated strictly (STS host, https, path, exact body,
16
+ * header whitelist, audience signed as `x-atlas-audience`); the engine never contacts AWS itself: the identity comes from
17
+ * the `fetch` option, which a test points at a fake STS. Every refusal is the same 403.
18
+ */
19
+ const KINDS = ['github_actions', 'kubernetes', 'aws', 'gcp', 'oidc'];
20
+ const DEFAULT_ISSUERS = { github_actions: 'https://token.actions.githubusercontent.com', gcp: 'https://accounts.google.com' };
21
+ const SLUG = /^[a-z0-9][a-z0-9_.-]{0,63}$/;
22
+ const MAX_PER_MACHINE = 20;
23
+ const MAX_TOKEN_AGE_S = 24 * 3600;
24
+ const SKEW_S = 30;
25
+ const STS_HOST = /^sts(\.[a-z0-9-]{4,30})?\.amazonaws\.com(\.cn)?$/;
26
+ const GET_CALLER_BODY = 'Action=GetCallerIdentity&Version=2011-06-15';
27
+ const AWS_HEADERS = new Set(['authorization', 'host', 'content-type', 'content-length', 'x-amz-date', 'x-amz-security-token', 'x-amz-content-sha256', 'x-atlas-audience', 'user-agent']);
28
+ const st = (0, support_1.engineState)((e) => ({ policies: new store_1.Table('machine_trust_policies', e.clock.now, 'mtp'), spentAws: new Set() }));
29
+ const bad = (message, param) => new errors_1.EmulatorError('VALIDATION_FAILED', message, param);
30
+ const isObj = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
31
+ const issuerOf = (p) => p.issuer ?? DEFAULT_ISSUERS[p.kind] ?? null;
32
+ function subjectPatternProblem(kind, pattern) {
33
+ if (!pattern || pattern.length > 512)
34
+ return 'subject_pattern is 1 to 512 characters.';
35
+ if (/^[*?]+$/.test(pattern))
36
+ return 'subject_pattern cannot be only wildcards: name who is trusted.';
37
+ if (kind === 'github_actions' && !/^repo:[A-Za-z0-9_.-]+\/[^*?]*/.test(pattern))
38
+ return 'For github_actions the pattern must name the owner, for example repo:my-org/my-repo:ref:refs/heads/main (wildcards allowed after the owner).';
39
+ if (kind === 'aws' && !/^arn:aws[a-z-]*:(iam|sts)::\d{12}:/.test(pattern))
40
+ return 'For aws the pattern must start with the account, for example arn:aws:iam::123456789012:role/deployer.';
41
+ if (kind === 'kubernetes' && !/^system:serviceaccount:[^*?:]+:/.test(pattern))
42
+ return 'For kubernetes the pattern must name the namespace, for example system:serviceaccount:prod:deployer.';
43
+ return null;
44
+ }
45
+ function httpsUrl(raw, param) {
46
+ if (typeof raw !== 'string' || raw.length > 2048)
47
+ throw bad(`${param} must be an https URL.`, param);
48
+ let u;
49
+ try {
50
+ u = new URL(raw);
51
+ }
52
+ catch {
53
+ throw bad(`${param} must be an https URL.`, param);
54
+ }
55
+ if (u.protocol !== 'https:' || u.username || u.password || u.search || u.hash)
56
+ throw bad(`${param} must be an https URL without credentials, query or fragment.`, param);
57
+ return raw;
58
+ }
59
+ function conditionsOf(raw) {
60
+ if (!Array.isArray(raw) || raw.length > 20)
61
+ throw bad('claim_conditions is a list of at most 20 conditions.', 'claim_conditions');
62
+ return raw.map((c, i) => {
63
+ const at = `claim_conditions[${i}]`;
64
+ if (!isObj(c))
65
+ throw bad('Each condition is an object with claim, op and value.', at);
66
+ if (Object.keys(c).some((k) => !['claim', 'op', 'value'].includes(k)))
67
+ throw bad('A condition takes claim, op and value.', at);
68
+ if (typeof c.claim !== 'string' || !c.claim || c.claim.length > 128)
69
+ throw bad('claim is a claim name of 1 to 128 characters.', `${at}.claim`);
70
+ if (!['equals', 'in', 'glob', 'exists'].includes(c.op))
71
+ throw bad('op is equals, in, glob or exists.', `${at}.op`);
72
+ if (c.op === 'exists') {
73
+ if (c.value !== undefined)
74
+ throw bad('exists takes no value.', `${at}.value`);
75
+ return { claim: c.claim, op: 'exists' };
76
+ }
77
+ const values = typeof c.value === 'string' ? [c.value] : Array.isArray(c.value) ? c.value : null;
78
+ if (!values || !values.length || values.length > 20 || values.some((v) => typeof v !== 'string' || !v || v.length > 256))
79
+ throw bad('value is a string, or a list of up to 20 strings of at most 256 characters.', `${at}.value`);
80
+ if (c.op === 'glob' && values.some((v) => /^[*?]+$/.test(v)))
81
+ throw bad('A glob cannot be only wildcards.', `${at}.value`);
82
+ return { claim: c.claim, op: c.op, value: c.value };
83
+ });
84
+ }
85
+ function jwksOf(raw) {
86
+ const keys = isObj(raw) ? raw.keys : undefined;
87
+ if (!Array.isArray(keys) || !keys.length || keys.length > 20)
88
+ throw bad('jwks is { keys: [...] } with 1 to 20 public keys.', 'jwks');
89
+ for (const k of keys)
90
+ if (!isObj(k) || typeof k.kty !== 'string' || ['d', 'p', 'q', 'dp', 'dq', 'qi', 'k', 'oth'].some((x) => x in k))
91
+ throw bad('Every key in jwks must be a public JWK (no private parameters).', 'jwks');
92
+ return { keys };
93
+ }
94
+ function normalize(b, existing) {
95
+ const kind = b.kind ?? existing?.kind;
96
+ if (!KINDS.includes(kind))
97
+ throw bad(`kind must be one of ${KINDS.join(', ')}.`, 'kind');
98
+ if (existing && kind !== existing.kind)
99
+ throw bad('kind cannot change. Create a new policy.', 'kind');
100
+ const name = b.name ?? existing?.name;
101
+ if (typeof name !== 'string' || !SLUG.test(name))
102
+ throw bad('name is 1-64 characters: lowercase letters, digits, dot, dash or underscore, starting with a letter or digit.', 'name');
103
+ const audience = b.audience ?? existing?.audience;
104
+ if (typeof audience !== 'string' || !audience || audience.length > 255)
105
+ throw bad('audience is 1 to 255 characters.', 'audience');
106
+ if (kind === 'aws' && !/^[\x21-\x7e]{1,128}$/.test(audience))
107
+ throw bad('For aws the audience is 1 to 128 printable characters without spaces.', 'audience');
108
+ const subjectPattern = b.subject_pattern ?? existing?.subject_pattern;
109
+ if (typeof subjectPattern !== 'string')
110
+ throw bad('subject_pattern is required.', 'subject_pattern');
111
+ const problem = subjectPatternProblem(kind, subjectPattern);
112
+ if (problem)
113
+ throw bad(problem, 'subject_pattern');
114
+ let issuer = b.issuer !== undefined ? (b.issuer === null ? null : httpsUrl(b.issuer, 'issuer')) : (existing?.issuer ?? null);
115
+ const jwksUri = b.jwks_uri !== undefined ? (b.jwks_uri === null ? null : httpsUrl(b.jwks_uri, 'jwks_uri')) : (existing?.jwks_uri ?? null);
116
+ const jwks = b.jwks !== undefined ? (b.jwks === null ? null : jwksOf(b.jwks)) : (existing?.jwks ?? null);
117
+ if (kind === 'aws') {
118
+ if (issuer || jwksUri || jwks)
119
+ throw bad('An aws policy takes no issuer, jwks_uri or jwks: the signed STS request is the proof.', 'issuer');
120
+ }
121
+ else {
122
+ if (!issuer && !DEFAULT_ISSUERS[kind])
123
+ throw bad(`A ${kind} policy needs an issuer.`, 'issuer');
124
+ if (issuer === DEFAULT_ISSUERS[kind])
125
+ issuer = null;
126
+ }
127
+ const maxTtl = b.max_ttl_seconds ?? existing?.max_ttl_seconds ?? 600;
128
+ if (typeof maxTtl !== 'number' || !Number.isInteger(maxTtl) || maxTtl < 60 || maxTtl > 3600)
129
+ throw bad('max_ttl_seconds is an integer from 60 to 3600.', 'max_ttl_seconds');
130
+ const enabled = b.enabled ?? existing?.enabled ?? true;
131
+ if (typeof enabled !== 'boolean')
132
+ throw bad('enabled must be true or false.', 'enabled');
133
+ return { name, kind, issuer, jwks_uri: jwksUri, jwks, audience, subject_pattern: subjectPattern, claim_conditions: b.claim_conditions !== undefined ? conditionsOf(b.claim_conditions) : (existing?.claim_conditions ?? []), max_ttl_seconds: maxTtl, enabled };
134
+ }
135
+ const present = (p) => ({
136
+ object: 'machine_trust_policy',
137
+ id: p.id,
138
+ machine_id: p.machine_id,
139
+ name: p.name,
140
+ kind: p.kind,
141
+ issuer: issuerOf(p),
142
+ jwks_uri: p.jwks_uri ?? null,
143
+ jwks: p.jwks ?? null,
144
+ audience: p.audience,
145
+ subject_pattern: p.subject_pattern,
146
+ claim_conditions: p.claim_conditions,
147
+ max_ttl_seconds: p.max_ttl_seconds,
148
+ enabled: p.enabled,
149
+ last_used_at: p.last_used_at ?? null,
150
+ created_at: p.created_at,
151
+ updated_at: p.updated_at,
152
+ });
153
+ const claimString = (v) => (Array.isArray(v) ? v : [v]).filter((x) => ['string', 'number', 'boolean'].includes(typeof x)).map(String);
154
+ /** A dotted claim path; `kubernetes.io.namespace` reads `claims['kubernetes.io'].namespace` when the whole key is absent. */
155
+ function claimAt(claims, path) {
156
+ if (path in claims)
157
+ return claims[path];
158
+ let cur = claims;
159
+ const parts = path.split('.');
160
+ for (let i = 0; i < parts.length; i++) {
161
+ if (!cur || typeof cur !== 'object')
162
+ return undefined;
163
+ let matched = false;
164
+ for (let j = parts.length; j > i; j--) {
165
+ const key = parts.slice(i, j).join('.');
166
+ if (key in cur) {
167
+ cur = cur[key];
168
+ i = j - 1;
169
+ matched = true;
170
+ break;
171
+ }
172
+ }
173
+ if (!matched)
174
+ return undefined;
175
+ }
176
+ return cur;
177
+ }
178
+ const conditionsPass = (conditions, claims) => conditions.every((c) => {
179
+ const got = claimAt(claims, c.claim);
180
+ if (c.op === 'exists')
181
+ return got !== undefined && got !== null;
182
+ const have = got === undefined || got === null ? [] : claimString(got);
183
+ const want = c.value === undefined ? [] : claimString(c.value);
184
+ if (!have.length || !want.length)
185
+ return false;
186
+ if (c.op === 'equals')
187
+ return have.some((h) => want.includes(h));
188
+ if (c.op === 'in')
189
+ return have.every((h) => want.includes(h));
190
+ return have.some((h) => want.some((w) => (0, jws_1.globMatch)(w, h)));
191
+ });
192
+ const deny = (reason) => ({ ok: false, reason });
193
+ const judge = (p, subject, claims) => (!(0, jws_1.globMatch)(p.subject_pattern, subject) ? deny('subject_mismatch') : !conditionsPass(p.claim_conditions, claims) ? deny('claim_condition_failed') : { ok: true, subject, claims });
194
+ async function issuerKeys(e, p) {
195
+ if (p.jwks?.keys?.length)
196
+ return p.jwks.keys;
197
+ const http = e.options.fetch ?? fetch;
198
+ const issuer = issuerOf(p);
199
+ let uri = p.jwks_uri;
200
+ const get = async (url) => {
201
+ const res = await http(url, { method: 'GET', headers: { accept: 'application/json' } });
202
+ if (!res.ok)
203
+ throw new Error(`status ${res.status}`);
204
+ return res.json();
205
+ };
206
+ if (!uri) {
207
+ const doc = await get(`${issuer.replace(/\/+$/, '')}/.well-known/openid-configuration`);
208
+ if (typeof doc.issuer !== 'string' || doc.issuer.replace(/\/+$/, '') !== issuer.replace(/\/+$/, ''))
209
+ throw new Error('issuer mismatch');
210
+ uri = doc.jwks_uri;
211
+ }
212
+ if (typeof uri !== 'string' || !/^https:\/\//i.test(uri))
213
+ throw new Error('jwks_uri must be https');
214
+ const set = await get(uri);
215
+ return (Array.isArray(set.keys) ? set.keys : []).filter((k) => !('d' in k) && !('k' in k));
216
+ }
217
+ async function verifyOidc(e, p, token) {
218
+ const issuer = issuerOf(p);
219
+ if (!issuer || p.kind === 'aws')
220
+ return deny('not_an_oidc_policy');
221
+ const jwt = (0, jws_1.decodeJwt)(token);
222
+ if (!jwt || !jws_1.SUPPORTED_ALGS.includes(String(jwt.header.alg)))
223
+ return deny('token_invalid');
224
+ let keys;
225
+ try {
226
+ keys = await issuerKeys(e, p);
227
+ }
228
+ catch {
229
+ return deny('issuer_keys_unavailable');
230
+ }
231
+ const candidates = keys.filter((k) => (jwt.header.kid ? k.kid === jwt.header.kid : true) && (!k.alg || k.alg === jwt.header.alg));
232
+ let verified = false;
233
+ for (const k of candidates)
234
+ if (await (0, jws_1.verifyJws)(jwt, k)) {
235
+ verified = true;
236
+ break;
237
+ }
238
+ if (!verified)
239
+ return deny('token_invalid');
240
+ const c = jwt.payload;
241
+ const nowS = e.clock.now() / 1000;
242
+ if (c.iss !== issuer)
243
+ return deny('token_invalid');
244
+ const aud = Array.isArray(c.aud) ? c.aud : [c.aud];
245
+ if (!aud.includes(p.audience))
246
+ return deny('token_invalid');
247
+ if (typeof c.exp !== 'number')
248
+ return deny('no_expiry');
249
+ if (c.exp + SKEW_S <= nowS)
250
+ return deny('token_invalid');
251
+ if (typeof c.nbf === 'number' && c.nbf - SKEW_S > nowS)
252
+ return deny('token_invalid');
253
+ if (typeof c.iat === 'number' && c.exp - c.iat > MAX_TOKEN_AGE_S)
254
+ return deny('token_too_long_lived');
255
+ if (typeof c.sub !== 'string' || !c.sub)
256
+ return deny('no_subject');
257
+ return judge(p, c.sub, c);
258
+ }
259
+ function checkAws(proof, audience) {
260
+ const fail = (reason) => ({ ok: false, reason });
261
+ if (proof.method !== undefined && String(proof.method).toUpperCase() !== 'POST')
262
+ return fail('aws_method');
263
+ if (typeof proof.url !== 'string')
264
+ return fail('aws_url');
265
+ let url;
266
+ try {
267
+ url = new URL(proof.url);
268
+ }
269
+ catch {
270
+ return fail('aws_url');
271
+ }
272
+ if (url.protocol !== 'https:' || !STS_HOST.test(url.hostname) || url.port || url.pathname !== '/' || url.search || url.username || url.password)
273
+ return fail('aws_url');
274
+ if (proof.body !== GET_CALLER_BODY)
275
+ return fail('aws_body');
276
+ if (!isObj(proof.headers))
277
+ return fail('aws_headers');
278
+ const headers = {};
279
+ for (const [k, v] of Object.entries(proof.headers)) {
280
+ const name = k.toLowerCase();
281
+ const value = Array.isArray(v) ? v[0] : v;
282
+ if (typeof value !== 'string' || !AWS_HEADERS.has(name) || value.length > 4096)
283
+ return fail('aws_headers');
284
+ headers[name] = value;
285
+ }
286
+ if (!headers.authorization || !headers['x-amz-date'])
287
+ return fail('aws_headers');
288
+ if (headers.host && headers.host !== url.host)
289
+ return fail('aws_headers');
290
+ if (headers['x-atlas-audience'] !== audience)
291
+ return fail('aws_audience');
292
+ const signed = /SignedHeaders=([^,\s]+)/.exec(headers.authorization)?.[1]?.split(';') ?? [];
293
+ if (!signed.includes('x-atlas-audience'))
294
+ return fail('aws_audience_unsigned');
295
+ return { ok: true, url: url.toString(), headers, fingerprint: `${headers.authorization}\n${headers['x-amz-date']}` };
296
+ }
297
+ async function verifyAws(e, p, proof) {
298
+ if (p.kind !== 'aws')
299
+ return deny('not_an_aws_policy');
300
+ const checked = checkAws(proof, p.audience);
301
+ if (!checked.ok)
302
+ return deny(checked.reason);
303
+ if (st(e).spentAws.has(checked.fingerprint))
304
+ return deny('aws_replayed');
305
+ let xml;
306
+ try {
307
+ const res = await (e.options.fetch ?? (() => Promise.reject(new Error('no fetch'))))(checked.url, { method: 'POST', headers: checked.headers, body: GET_CALLER_BODY });
308
+ if (!res.ok)
309
+ return { ...deny('aws_rejected') };
310
+ xml = await res.text();
311
+ }
312
+ catch {
313
+ return deny('aws_unavailable');
314
+ }
315
+ const field = (tag) => new RegExp(`<${tag}>([^<]{1,2048})</${tag}>`).exec(xml)?.[1];
316
+ const arn = field('Arn');
317
+ const account = field('Account');
318
+ if (!arn || !account || !/^\d{12}$/.test(account))
319
+ return deny('aws_response');
320
+ // An assumed-role ARN is the role it assumes; other ARNs are their own identity.
321
+ const m = /^arn:(aws[a-z-]*):sts::(\d{12}):assumed-role\/([^/]+)\/(.+)$/.exec(arn);
322
+ const subject = m ? `arn:${m[1]}:iam::${m[2]}:role/${m[3]}` : arn;
323
+ const verdict = judge(p, subject, { arn, account, ...(field('UserId') ? { user_id: field('UserId') } : {}), ...(m ? { session_name: m[4] } : {}), sub: subject });
324
+ return verdict.ok ? { ...verdict, fingerprint: checked.fingerprint } : verdict;
325
+ }
326
+ /** First enabled policy that accepts the subject proof; every refusal reason is kept for the dry run. */
327
+ async function match(e, policies, input, policyId) {
328
+ const reasons = [];
329
+ const pool = policies.filter((p) => p.enabled && (!policyId || p.id === policyId));
330
+ if (!pool.length)
331
+ return { reasons: ['no_matching_policy'] };
332
+ for (const p of pool) {
333
+ let v;
334
+ if (input.token !== undefined) {
335
+ const iss = (0, jws_1.decodeJwt)(input.token)?.payload.iss;
336
+ if (typeof iss !== 'string' || (p.kind === 'aws') || (issuerOf(p) ?? '').replace(/\/+$/, '') !== iss.replace(/\/+$/, '')) {
337
+ reasons.push('issuer_mismatch');
338
+ continue;
339
+ }
340
+ v = await verifyOidc(e, p, input.token);
341
+ }
342
+ else
343
+ v = await verifyAws(e, p, input.aws);
344
+ if (v.ok)
345
+ return { policy: p, verdict: v };
346
+ reasons.push(v.reason);
347
+ }
348
+ return { reasons };
349
+ }
350
+ const policyOf = (e, id) => {
351
+ const p = st(e).policies.get(id);
352
+ if (!p)
353
+ throw (0, errors_1.notFound)('Trust policy');
354
+ return p;
355
+ };
356
+ function federationHandlers() {
357
+ const machineOf = (e, id) => {
358
+ const m = e.db.machines.get(String(id ?? ''));
359
+ if (!m || m.deleted)
360
+ throw new errors_1.EmulatorError('NOT_FOUND', 'machine_id is not a machine.', 'machine_id');
361
+ return m;
362
+ };
363
+ return [
364
+ {
365
+ method: 'GET',
366
+ pattern: '/v1/machine_trust_policies',
367
+ scope: 'machines:read',
368
+ handler: (c) => {
369
+ const mid = c.query.get('machine_id');
370
+ return { body: { object: 'list', data: st(c.engine).policies.filter((p) => !mid || p.machine_id === mid).map(present), has_more: false } };
371
+ },
372
+ },
373
+ {
374
+ method: 'POST',
375
+ pattern: '/v1/machine_trust_policies',
376
+ scope: 'machines:write',
377
+ handler: (c) => {
378
+ const e = c.engine;
379
+ const m = machineOf(e, (0, util_1.need)(c.body, 'machine_id'));
380
+ const fields = normalize(c.body);
381
+ const s = st(e);
382
+ if (s.policies.filter((p) => p.machine_id === m.id).length >= MAX_PER_MACHINE)
383
+ throw new errors_1.EmulatorError('CONFLICT', `A machine has at most ${MAX_PER_MACHINE} trust policies.`);
384
+ if (s.policies.find((p) => p.machine_id === m.id && p.name === fields.name))
385
+ throw new errors_1.EmulatorError('CONFLICT', `This machine already has a trust policy named "${fields.name}".`, 'name');
386
+ const now = e.clock.now();
387
+ const row = s.policies.insert({ machine_id: m.id, ...fields, last_used_at: null, created_at: now, updated_at: now });
388
+ return { status: 201, body: present(row) };
389
+ },
390
+ },
391
+ { method: 'GET', pattern: '/v1/machine_trust_policies/:id', scope: 'machines:read', handler: (c) => ({ body: present(policyOf(c.engine, c.params.id)) }) },
392
+ {
393
+ method: 'PATCH',
394
+ pattern: '/v1/machine_trust_policies/:id',
395
+ scope: 'machines:write',
396
+ handler: (c) => {
397
+ const e = c.engine;
398
+ const p = policyOf(e, c.params.id);
399
+ const fields = normalize(c.body, p);
400
+ if (fields.name !== p.name && st(e).policies.find((x) => x.machine_id === p.machine_id && x.name === fields.name))
401
+ throw new errors_1.EmulatorError('CONFLICT', `This machine already has a trust policy named "${fields.name}".`, 'name');
402
+ Object.assign(p, fields, { updated_at: e.clock.now() });
403
+ return { body: present(p) };
404
+ },
405
+ },
406
+ {
407
+ method: 'DELETE',
408
+ pattern: '/v1/machine_trust_policies/:id',
409
+ scope: 'machines:write',
410
+ handler: (c) => {
411
+ const p = policyOf(c.engine, c.params.id);
412
+ st(c.engine).policies.delete(p.id);
413
+ return { body: { object: 'machine_trust_policy', id: p.id, deleted: true } };
414
+ },
415
+ },
416
+ {
417
+ // A dry run: would this proof be accepted by this policy (even disabled)? Mints and spends nothing.
418
+ method: 'POST',
419
+ pattern: '/v1/machine_trust_policies/:id/test',
420
+ scope: 'machines:read',
421
+ handler: async (c) => {
422
+ const p = policyOf(c.engine, c.params.id);
423
+ if ((c.body.token === undefined) === (c.body.aws === undefined))
424
+ throw bad('Send token (OIDC kinds) or aws (aws kind), not both and not neither.', 'token');
425
+ if (c.body.token !== undefined && typeof c.body.token !== 'string')
426
+ throw bad('token must be a string.', 'token');
427
+ if (c.body.aws !== undefined && !isObj(c.body.aws))
428
+ throw bad('aws must be an object.', 'aws');
429
+ const found = await match(c.engine, [{ ...p, enabled: true }], { token: c.body.token, aws: c.body.aws }, p.id);
430
+ return 'verdict' in found
431
+ ? { body: { object: 'machine_trust_policy_test', accepted: true, subject: found.verdict.subject, claims: found.verdict.claims, reasons: [] } }
432
+ : { body: { object: 'machine_trust_policy_test', accepted: false, subject: null, claims: null, reasons: [...new Set(found.reasons)] } };
433
+ },
434
+ },
435
+ {
436
+ method: 'POST',
437
+ pattern: '/v1/machines/federate',
438
+ public: true,
439
+ handler: (c) => federate(c),
440
+ },
441
+ ];
442
+ }
443
+ async function federate(c) {
444
+ const e = c.engine;
445
+ const b = c.body;
446
+ const machineId = typeof b.machine_id === 'string' ? b.machine_id.trim() : '';
447
+ if (!machineId)
448
+ throw bad('A `machine_id` is required.', 'machine_id');
449
+ if ((b.token === undefined) === (b.aws === undefined))
450
+ throw bad('Send `token` (a GitHub Actions, Kubernetes, GCP or OIDC token) or `aws` (a signed GetCallerIdentity request), not both and not neither.', 'token');
451
+ if (b.token !== undefined && (typeof b.token !== 'string' || !b.token || b.token.length > 16_384))
452
+ throw bad('`token` must be a JWT string.', 'token');
453
+ if (b.aws !== undefined && !isObj(b.aws))
454
+ throw bad('`aws` must be an object.', 'aws');
455
+ if (b.policy_id !== undefined && typeof b.policy_id !== 'string')
456
+ throw bad('`policy_id` must be a trust policy id.', 'policy_id');
457
+ // The same answer as a refused token: a caller learns nothing about which machines exist.
458
+ const refused = () => new errors_1.EmulatorError('FORBIDDEN', 'No trust policy of this machine accepts that token.');
459
+ const m = e.db.machines.get(machineId);
460
+ if (!m || m.deleted || m.status !== 'active')
461
+ throw refused();
462
+ const proved = await (0, device_1.provedBindingOf)(c);
463
+ (0, device_1.enforceTokenBinding)(m, proved);
464
+ const found = await match(e, st(e).policies.filter((p) => p.machine_id === m.id), { token: b.token, aws: b.aws }, b.policy_id);
465
+ if (!('verdict' in found))
466
+ throw refused();
467
+ const { policy, verdict } = found;
468
+ const issued = await (0, device_1.issueMachineToken)(c, m, b, {
469
+ proved,
470
+ maxTtlSeconds: policy.max_ttl_seconds,
471
+ extraClaims: { fed: { kind: policy.kind, policy_id: policy.id, sub: verdict.subject } },
472
+ // The signed AWS request is spent only once the token is certain to be issued.
473
+ beforeIssue: () => {
474
+ if (verdict.fingerprint)
475
+ st(e).spentAws.add(verdict.fingerprint);
476
+ },
477
+ });
478
+ policy.last_used_at = e.clock.now();
479
+ return issued;
480
+ }
481
+ //# sourceMappingURL=federation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/handlers/federation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { RouteDef } from '../engine';
2
+ export declare function governanceHandlers(): RouteDef[];