@ever-works/oidc-identity 1.0.1 → 1.0.3
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/index.cjs +255 -0
- package/dist/index.js +255 -0
- package/dist/testing/fake-oidc-provider.cjs +10 -5
- package/dist/testing/fake-oidc-provider.js +11 -6
- package/package.json +6 -6
package/dist/index.cjs
CHANGED
|
@@ -66,6 +66,254 @@ module.exports = __toCommonJS(src_exports);
|
|
|
66
66
|
// src/oidc-identity.plugin.ts
|
|
67
67
|
var import_node_crypto = require("crypto");
|
|
68
68
|
|
|
69
|
+
// ../../../node_modules/.pnpm/@ever-co+connect-contracts@1.0.0-rc.2/node_modules/@ever-co/connect-contracts/dist/index.js
|
|
70
|
+
var CONSTANTS = {
|
|
71
|
+
"$comment": "Wire constants of the Ever Platform modules. tools/split-integrations.mjs refreshes the fields read from the contract (contracts_version, code patterns, install_sources, products, stats_headers, feed_event_types, integration_keys, root_keys); every other value is a default a product may override by its own configuration.",
|
|
72
|
+
"contracts_version": "1.0.0-rc.2",
|
|
73
|
+
"connect_code_pattern": "^EVC(-[0-9A-HJKMNP-TV-Za-hj-kmnp-tv-z]{4}){3}$",
|
|
74
|
+
"link_code_pattern": "^EVL(-[0-9A-HJKMNP-TV-Za-hj-kmnp-tv-z]{4}){3}$",
|
|
75
|
+
"install_sources": "^(cloud|self-hosted|ever\\.sh|works_app|desktop|partner:[a-z0-9-]{2,32})$",
|
|
76
|
+
"products": [
|
|
77
|
+
"gauzy",
|
|
78
|
+
"teams",
|
|
79
|
+
"works",
|
|
80
|
+
"rec",
|
|
81
|
+
"traduora",
|
|
82
|
+
"demand"
|
|
83
|
+
],
|
|
84
|
+
"instance_kinds": [
|
|
85
|
+
"cloud",
|
|
86
|
+
"self_hosted",
|
|
87
|
+
"works_app"
|
|
88
|
+
],
|
|
89
|
+
"instance_token_prefix": "evit_",
|
|
90
|
+
"entitlement_typ": "ever-entitlement+jwt",
|
|
91
|
+
"intent_typ": "ever-intent+jwt",
|
|
92
|
+
"assertion_typ": "ever-assertion+jwt",
|
|
93
|
+
"key_manifest_typ": "ever-key-manifest+jwt",
|
|
94
|
+
"stats_link_typ": "ever-stats-link+jwt",
|
|
95
|
+
"client_assertion_typ": "JWT",
|
|
96
|
+
"client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
|
|
97
|
+
"entitlement_aud": "ever-connect",
|
|
98
|
+
"stats_headers": {
|
|
99
|
+
"key": "Ever-Stats-Key",
|
|
100
|
+
"signature": "Ever-Stats-Signature",
|
|
101
|
+
"key_id": "Ever-Stats-Key-Id"
|
|
102
|
+
},
|
|
103
|
+
"stats_signature_prefix": "ed25519=",
|
|
104
|
+
"feed_event_types": [
|
|
105
|
+
"ever.consent.consent.granted",
|
|
106
|
+
"ever.consent.consent.revoked",
|
|
107
|
+
"ever.consent.integration.disabled",
|
|
108
|
+
"ever.consent.integration.enabled",
|
|
109
|
+
"ever.consent.integration.scope_bumped",
|
|
110
|
+
"ever.entitlements.entitlement.issued",
|
|
111
|
+
"ever.entitlements.entitlement.revoked",
|
|
112
|
+
"ever.entitlements.usage.limit_reached",
|
|
113
|
+
"ever.registry.instance.approved",
|
|
114
|
+
"ever.registry.instance.connected",
|
|
115
|
+
"ever.registry.instance.disconnected",
|
|
116
|
+
"ever.registry.instance.key_rotated",
|
|
117
|
+
"ever.registry.instance.revoked",
|
|
118
|
+
"ever.registry.instance.seen",
|
|
119
|
+
"ever.registry.managed_operation.requested",
|
|
120
|
+
"ever.registry.managed_operation.state_changed",
|
|
121
|
+
"ever.registry.membership.created",
|
|
122
|
+
"ever.registry.membership.removed",
|
|
123
|
+
"ever.registry.membership.role_changed",
|
|
124
|
+
"ever.registry.person.deletion_requested",
|
|
125
|
+
"ever.registry.person.export_requested",
|
|
126
|
+
"ever.registry.tenant_link.created",
|
|
127
|
+
"ever.registry.tenant_link.orphaned",
|
|
128
|
+
"ever.registry.tenant_link.resumed",
|
|
129
|
+
"ever.registry.tenant_link.suspended",
|
|
130
|
+
"ever.registry.tenant_link.unlinked"
|
|
131
|
+
],
|
|
132
|
+
"integration_keys": [
|
|
133
|
+
"instance_url",
|
|
134
|
+
"stats_link",
|
|
135
|
+
"ever_id_login",
|
|
136
|
+
"counterparty_lookup",
|
|
137
|
+
"counterparty_discoverable",
|
|
138
|
+
"profile_import",
|
|
139
|
+
"usage_reporting",
|
|
140
|
+
"app_sync",
|
|
141
|
+
"billing_link",
|
|
142
|
+
"webhooks",
|
|
143
|
+
"managed_operations",
|
|
144
|
+
"provider_access",
|
|
145
|
+
"marketplace_installs"
|
|
146
|
+
],
|
|
147
|
+
"key_manifest_path": "/.well-known/ever-keys.json",
|
|
148
|
+
"assertion_audience_path": "/v1/instances/token",
|
|
149
|
+
"assertion_max_ttl_s": 300,
|
|
150
|
+
"assertion_max_skew_s": 300,
|
|
151
|
+
"token_ttl_s": 3600,
|
|
152
|
+
"token_refresh_after_s": 3e3,
|
|
153
|
+
"key_rotation_overlap_s": 604800,
|
|
154
|
+
"entitlement": {
|
|
155
|
+
"validity_s": 604800,
|
|
156
|
+
"refresh_after_s": 21600,
|
|
157
|
+
"grace_s": 2592e3,
|
|
158
|
+
"max_reads_per_hour": 6
|
|
159
|
+
},
|
|
160
|
+
"key_manifest": {
|
|
161
|
+
"refresh_s": 86400,
|
|
162
|
+
"unknown_kid_refresh_min_s": 600,
|
|
163
|
+
"lifetime_s": 2592e3
|
|
164
|
+
},
|
|
165
|
+
"heartbeat_interval_s": 86400,
|
|
166
|
+
"heartbeat_after_boot_max_s": 300,
|
|
167
|
+
"heartbeat_min_interval_s": 60,
|
|
168
|
+
"feed": {
|
|
169
|
+
"wait_s": 25,
|
|
170
|
+
"interval_fallback_s": 900,
|
|
171
|
+
"page_limit": 50
|
|
172
|
+
},
|
|
173
|
+
"stats": {
|
|
174
|
+
"send_interval_s": 86400,
|
|
175
|
+
"min_interval_s": 3600,
|
|
176
|
+
"max_bytes": 16384,
|
|
177
|
+
"final_resend_days": [
|
|
178
|
+
1,
|
|
179
|
+
2,
|
|
180
|
+
3
|
|
181
|
+
],
|
|
182
|
+
"reports_per_day": 24
|
|
183
|
+
},
|
|
184
|
+
"lookup": {
|
|
185
|
+
"normalization_version": 1,
|
|
186
|
+
"max_hashes_per_query": 100,
|
|
187
|
+
"cache_positive_s": 86400,
|
|
188
|
+
"cache_negative_s": 3600,
|
|
189
|
+
"salt_cache_s": 86400
|
|
190
|
+
},
|
|
191
|
+
"mirror": {
|
|
192
|
+
"max_bytes": 4194304,
|
|
193
|
+
"interval_s": 30
|
|
194
|
+
},
|
|
195
|
+
"step_up_max_age_s": 300,
|
|
196
|
+
"stats_link_statement_max_age_s": 600,
|
|
197
|
+
"timeouts_ms": {
|
|
198
|
+
"read": 6e3,
|
|
199
|
+
"write": 1e4
|
|
200
|
+
},
|
|
201
|
+
"user_agent_pattern": "ever-connect-sdk/<sdk version> (<product>/<product version>)",
|
|
202
|
+
"root_keys": [
|
|
203
|
+
{
|
|
204
|
+
"kid": "ever-202610-0d77",
|
|
205
|
+
"iss": "https://api-dev.ever.co",
|
|
206
|
+
"kty": "OKP",
|
|
207
|
+
"crv": "Ed25519",
|
|
208
|
+
"x": "cgULEqOov0n4s9I8luZboIgJp9mIGusmsSdSL4oCjKk",
|
|
209
|
+
"use": "sig",
|
|
210
|
+
"alg": "EdDSA"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"kid": "ever-202610-8704",
|
|
214
|
+
"iss": "https://api-stage.ever.co",
|
|
215
|
+
"kty": "OKP",
|
|
216
|
+
"crv": "Ed25519",
|
|
217
|
+
"x": "Ync-MW21JL72GOiS-RVrlvS3gyFH5Krh5f6I66jw1Qc",
|
|
218
|
+
"use": "sig",
|
|
219
|
+
"alg": "EdDSA"
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"root_keys_file_env": "EVER_PLATFORM_ROOT_KEYS_FILE",
|
|
223
|
+
"root_keys_file_hosts": [
|
|
224
|
+
"localhost",
|
|
225
|
+
"127.0.0.0/8",
|
|
226
|
+
"::1",
|
|
227
|
+
"10.0.0.0/8",
|
|
228
|
+
"172.16.0.0/12",
|
|
229
|
+
"192.168.0.0/16",
|
|
230
|
+
"*.localhost"
|
|
231
|
+
]
|
|
232
|
+
};
|
|
233
|
+
var FEED_EVENT_TYPES = CONSTANTS.feed_event_types;
|
|
234
|
+
var PROBLEM_CODES = [
|
|
235
|
+
"validation_failed",
|
|
236
|
+
"not_found",
|
|
237
|
+
"unauthorized",
|
|
238
|
+
"forbidden_role",
|
|
239
|
+
"forbidden_scope",
|
|
240
|
+
"ambiguous_credentials",
|
|
241
|
+
"credential_revoked",
|
|
242
|
+
"instance_disconnected",
|
|
243
|
+
"instance_pending_approval",
|
|
244
|
+
"not_connection_owner",
|
|
245
|
+
"integration_disabled",
|
|
246
|
+
"integration_revoked",
|
|
247
|
+
"denied_by_policy",
|
|
248
|
+
"integration_not_available",
|
|
249
|
+
"entitlement_required",
|
|
250
|
+
"tier_required",
|
|
251
|
+
"limit_exceeded",
|
|
252
|
+
"rate_limited",
|
|
253
|
+
"idempotency_mismatch",
|
|
254
|
+
"idempotency_in_progress",
|
|
255
|
+
"stale_version",
|
|
256
|
+
"module_disabled",
|
|
257
|
+
"handle_taken",
|
|
258
|
+
"handle_reserved",
|
|
259
|
+
"handle_retired",
|
|
260
|
+
"handle_invalid",
|
|
261
|
+
"handle_held",
|
|
262
|
+
"handle_held_by_you",
|
|
263
|
+
"code_invalid",
|
|
264
|
+
"code_expired",
|
|
265
|
+
"product_mismatch",
|
|
266
|
+
"product_not_supported",
|
|
267
|
+
"key_mismatch",
|
|
268
|
+
"signature_invalid",
|
|
269
|
+
"unlinked_org",
|
|
270
|
+
"schema_violation",
|
|
271
|
+
"mirror_owned_field",
|
|
272
|
+
"illegal_transition",
|
|
273
|
+
"already_exists",
|
|
274
|
+
"already_completed",
|
|
275
|
+
"billing_active",
|
|
276
|
+
"sso_required",
|
|
277
|
+
"reauth_required",
|
|
278
|
+
"session_required",
|
|
279
|
+
"step_up_required",
|
|
280
|
+
"session_bound",
|
|
281
|
+
"authorization_pending",
|
|
282
|
+
"slow_down",
|
|
283
|
+
"expired_token",
|
|
284
|
+
"already_connected",
|
|
285
|
+
"already_linked",
|
|
286
|
+
"already_claimed",
|
|
287
|
+
"invalid_client",
|
|
288
|
+
"public_jwk_invalid",
|
|
289
|
+
"identifier_claimed",
|
|
290
|
+
"salt_version_unknown",
|
|
291
|
+
"salt_version_retired",
|
|
292
|
+
"hashes_invalid",
|
|
293
|
+
"lookup_key_required",
|
|
294
|
+
"required_component",
|
|
295
|
+
"resync_required",
|
|
296
|
+
"last_owner",
|
|
297
|
+
"last_auth_method",
|
|
298
|
+
"instances_linked",
|
|
299
|
+
"install_in_progress",
|
|
300
|
+
"slug_reserved",
|
|
301
|
+
"checklist_incomplete",
|
|
302
|
+
"scope_version_outdated",
|
|
303
|
+
"method_not_allowed",
|
|
304
|
+
"payload_too_large",
|
|
305
|
+
"unsupported_media_type",
|
|
306
|
+
"gone",
|
|
307
|
+
"unavailable",
|
|
308
|
+
"upstream",
|
|
309
|
+
"database_absent",
|
|
310
|
+
"database_unreachable",
|
|
311
|
+
"topic_private",
|
|
312
|
+
"keys_unavailable",
|
|
313
|
+
"internal_error"
|
|
314
|
+
];
|
|
315
|
+
var CODES = new Set(PROBLEM_CODES);
|
|
316
|
+
|
|
69
317
|
// ../../contracts/dist/index.js
|
|
70
318
|
var USER_SELECTABLE_WORK_KINDS = [
|
|
71
319
|
"website",
|
|
@@ -868,6 +1116,8 @@ var FLEET_JOB_DEFAULT_QUEUED_MAX_AGE_SEC = Object.freeze({
|
|
|
868
1116
|
});
|
|
869
1117
|
var FLEET_JOB_MAX_QUEUED_MAX_AGE_SEC = 7 * 24 * 60 * 60;
|
|
870
1118
|
var FLEET_AGENT_EXECUTION_MAX_INSTRUCTIONS_BYTES = 160 * 1024;
|
|
1119
|
+
var FLEET_AGENT_TASK_TIMELINE_MAX_BYTES = 48 * 1024;
|
|
1120
|
+
var FLEET_AGENT_TASK_TRANSCRIPT_MAX_BYTES = 64 * 1024;
|
|
871
1121
|
var FLEET_AGENT_TASK_QUESTION_MAX_FILE_BYTES = 64 * 1024;
|
|
872
1122
|
var FLEET_AGENT_TASK_QUESTION_MAX_CONTEXT_BYTES = 6 * 1024;
|
|
873
1123
|
var FLEET_MAX_DAILY_COST_CEILING_CENTS = 1e5 * 100;
|
|
@@ -1273,6 +1523,11 @@ var READINESS_BLOCKERS = Object.freeze([
|
|
|
1273
1523
|
"withdrawn",
|
|
1274
1524
|
"other-refusals"
|
|
1275
1525
|
]);
|
|
1526
|
+
var EVER_STATS_KEY_HEADER = CONSTANTS.stats_headers.key;
|
|
1527
|
+
var EVER_STATS_SIGNATURE_HEADER = CONSTANTS.stats_headers.signature;
|
|
1528
|
+
var EVER_STATS_KEY_ID_HEADER = CONSTANTS.stats_headers.key_id;
|
|
1529
|
+
var EVER_STATS_SIGNATURE_PREFIX = CONSTANTS.stats_signature_prefix;
|
|
1530
|
+
var EVER_STATS_MAX_BODY_BYTES = CONSTANTS.stats.max_bytes;
|
|
1276
1531
|
|
|
1277
1532
|
// ../../plugin/dist/index.js
|
|
1278
1533
|
var DEFAULT_DIFF_MAX_BYTES = 256 * 1024;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,254 @@
|
|
|
1
1
|
// src/oidc-identity.plugin.ts
|
|
2
2
|
import { randomBytes } from "crypto";
|
|
3
3
|
|
|
4
|
+
// ../../../node_modules/.pnpm/@ever-co+connect-contracts@1.0.0-rc.2/node_modules/@ever-co/connect-contracts/dist/index.js
|
|
5
|
+
var CONSTANTS = {
|
|
6
|
+
"$comment": "Wire constants of the Ever Platform modules. tools/split-integrations.mjs refreshes the fields read from the contract (contracts_version, code patterns, install_sources, products, stats_headers, feed_event_types, integration_keys, root_keys); every other value is a default a product may override by its own configuration.",
|
|
7
|
+
"contracts_version": "1.0.0-rc.2",
|
|
8
|
+
"connect_code_pattern": "^EVC(-[0-9A-HJKMNP-TV-Za-hj-kmnp-tv-z]{4}){3}$",
|
|
9
|
+
"link_code_pattern": "^EVL(-[0-9A-HJKMNP-TV-Za-hj-kmnp-tv-z]{4}){3}$",
|
|
10
|
+
"install_sources": "^(cloud|self-hosted|ever\\.sh|works_app|desktop|partner:[a-z0-9-]{2,32})$",
|
|
11
|
+
"products": [
|
|
12
|
+
"gauzy",
|
|
13
|
+
"teams",
|
|
14
|
+
"works",
|
|
15
|
+
"rec",
|
|
16
|
+
"traduora",
|
|
17
|
+
"demand"
|
|
18
|
+
],
|
|
19
|
+
"instance_kinds": [
|
|
20
|
+
"cloud",
|
|
21
|
+
"self_hosted",
|
|
22
|
+
"works_app"
|
|
23
|
+
],
|
|
24
|
+
"instance_token_prefix": "evit_",
|
|
25
|
+
"entitlement_typ": "ever-entitlement+jwt",
|
|
26
|
+
"intent_typ": "ever-intent+jwt",
|
|
27
|
+
"assertion_typ": "ever-assertion+jwt",
|
|
28
|
+
"key_manifest_typ": "ever-key-manifest+jwt",
|
|
29
|
+
"stats_link_typ": "ever-stats-link+jwt",
|
|
30
|
+
"client_assertion_typ": "JWT",
|
|
31
|
+
"client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
|
|
32
|
+
"entitlement_aud": "ever-connect",
|
|
33
|
+
"stats_headers": {
|
|
34
|
+
"key": "Ever-Stats-Key",
|
|
35
|
+
"signature": "Ever-Stats-Signature",
|
|
36
|
+
"key_id": "Ever-Stats-Key-Id"
|
|
37
|
+
},
|
|
38
|
+
"stats_signature_prefix": "ed25519=",
|
|
39
|
+
"feed_event_types": [
|
|
40
|
+
"ever.consent.consent.granted",
|
|
41
|
+
"ever.consent.consent.revoked",
|
|
42
|
+
"ever.consent.integration.disabled",
|
|
43
|
+
"ever.consent.integration.enabled",
|
|
44
|
+
"ever.consent.integration.scope_bumped",
|
|
45
|
+
"ever.entitlements.entitlement.issued",
|
|
46
|
+
"ever.entitlements.entitlement.revoked",
|
|
47
|
+
"ever.entitlements.usage.limit_reached",
|
|
48
|
+
"ever.registry.instance.approved",
|
|
49
|
+
"ever.registry.instance.connected",
|
|
50
|
+
"ever.registry.instance.disconnected",
|
|
51
|
+
"ever.registry.instance.key_rotated",
|
|
52
|
+
"ever.registry.instance.revoked",
|
|
53
|
+
"ever.registry.instance.seen",
|
|
54
|
+
"ever.registry.managed_operation.requested",
|
|
55
|
+
"ever.registry.managed_operation.state_changed",
|
|
56
|
+
"ever.registry.membership.created",
|
|
57
|
+
"ever.registry.membership.removed",
|
|
58
|
+
"ever.registry.membership.role_changed",
|
|
59
|
+
"ever.registry.person.deletion_requested",
|
|
60
|
+
"ever.registry.person.export_requested",
|
|
61
|
+
"ever.registry.tenant_link.created",
|
|
62
|
+
"ever.registry.tenant_link.orphaned",
|
|
63
|
+
"ever.registry.tenant_link.resumed",
|
|
64
|
+
"ever.registry.tenant_link.suspended",
|
|
65
|
+
"ever.registry.tenant_link.unlinked"
|
|
66
|
+
],
|
|
67
|
+
"integration_keys": [
|
|
68
|
+
"instance_url",
|
|
69
|
+
"stats_link",
|
|
70
|
+
"ever_id_login",
|
|
71
|
+
"counterparty_lookup",
|
|
72
|
+
"counterparty_discoverable",
|
|
73
|
+
"profile_import",
|
|
74
|
+
"usage_reporting",
|
|
75
|
+
"app_sync",
|
|
76
|
+
"billing_link",
|
|
77
|
+
"webhooks",
|
|
78
|
+
"managed_operations",
|
|
79
|
+
"provider_access",
|
|
80
|
+
"marketplace_installs"
|
|
81
|
+
],
|
|
82
|
+
"key_manifest_path": "/.well-known/ever-keys.json",
|
|
83
|
+
"assertion_audience_path": "/v1/instances/token",
|
|
84
|
+
"assertion_max_ttl_s": 300,
|
|
85
|
+
"assertion_max_skew_s": 300,
|
|
86
|
+
"token_ttl_s": 3600,
|
|
87
|
+
"token_refresh_after_s": 3e3,
|
|
88
|
+
"key_rotation_overlap_s": 604800,
|
|
89
|
+
"entitlement": {
|
|
90
|
+
"validity_s": 604800,
|
|
91
|
+
"refresh_after_s": 21600,
|
|
92
|
+
"grace_s": 2592e3,
|
|
93
|
+
"max_reads_per_hour": 6
|
|
94
|
+
},
|
|
95
|
+
"key_manifest": {
|
|
96
|
+
"refresh_s": 86400,
|
|
97
|
+
"unknown_kid_refresh_min_s": 600,
|
|
98
|
+
"lifetime_s": 2592e3
|
|
99
|
+
},
|
|
100
|
+
"heartbeat_interval_s": 86400,
|
|
101
|
+
"heartbeat_after_boot_max_s": 300,
|
|
102
|
+
"heartbeat_min_interval_s": 60,
|
|
103
|
+
"feed": {
|
|
104
|
+
"wait_s": 25,
|
|
105
|
+
"interval_fallback_s": 900,
|
|
106
|
+
"page_limit": 50
|
|
107
|
+
},
|
|
108
|
+
"stats": {
|
|
109
|
+
"send_interval_s": 86400,
|
|
110
|
+
"min_interval_s": 3600,
|
|
111
|
+
"max_bytes": 16384,
|
|
112
|
+
"final_resend_days": [
|
|
113
|
+
1,
|
|
114
|
+
2,
|
|
115
|
+
3
|
|
116
|
+
],
|
|
117
|
+
"reports_per_day": 24
|
|
118
|
+
},
|
|
119
|
+
"lookup": {
|
|
120
|
+
"normalization_version": 1,
|
|
121
|
+
"max_hashes_per_query": 100,
|
|
122
|
+
"cache_positive_s": 86400,
|
|
123
|
+
"cache_negative_s": 3600,
|
|
124
|
+
"salt_cache_s": 86400
|
|
125
|
+
},
|
|
126
|
+
"mirror": {
|
|
127
|
+
"max_bytes": 4194304,
|
|
128
|
+
"interval_s": 30
|
|
129
|
+
},
|
|
130
|
+
"step_up_max_age_s": 300,
|
|
131
|
+
"stats_link_statement_max_age_s": 600,
|
|
132
|
+
"timeouts_ms": {
|
|
133
|
+
"read": 6e3,
|
|
134
|
+
"write": 1e4
|
|
135
|
+
},
|
|
136
|
+
"user_agent_pattern": "ever-connect-sdk/<sdk version> (<product>/<product version>)",
|
|
137
|
+
"root_keys": [
|
|
138
|
+
{
|
|
139
|
+
"kid": "ever-202610-0d77",
|
|
140
|
+
"iss": "https://api-dev.ever.co",
|
|
141
|
+
"kty": "OKP",
|
|
142
|
+
"crv": "Ed25519",
|
|
143
|
+
"x": "cgULEqOov0n4s9I8luZboIgJp9mIGusmsSdSL4oCjKk",
|
|
144
|
+
"use": "sig",
|
|
145
|
+
"alg": "EdDSA"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"kid": "ever-202610-8704",
|
|
149
|
+
"iss": "https://api-stage.ever.co",
|
|
150
|
+
"kty": "OKP",
|
|
151
|
+
"crv": "Ed25519",
|
|
152
|
+
"x": "Ync-MW21JL72GOiS-RVrlvS3gyFH5Krh5f6I66jw1Qc",
|
|
153
|
+
"use": "sig",
|
|
154
|
+
"alg": "EdDSA"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"root_keys_file_env": "EVER_PLATFORM_ROOT_KEYS_FILE",
|
|
158
|
+
"root_keys_file_hosts": [
|
|
159
|
+
"localhost",
|
|
160
|
+
"127.0.0.0/8",
|
|
161
|
+
"::1",
|
|
162
|
+
"10.0.0.0/8",
|
|
163
|
+
"172.16.0.0/12",
|
|
164
|
+
"192.168.0.0/16",
|
|
165
|
+
"*.localhost"
|
|
166
|
+
]
|
|
167
|
+
};
|
|
168
|
+
var FEED_EVENT_TYPES = CONSTANTS.feed_event_types;
|
|
169
|
+
var PROBLEM_CODES = [
|
|
170
|
+
"validation_failed",
|
|
171
|
+
"not_found",
|
|
172
|
+
"unauthorized",
|
|
173
|
+
"forbidden_role",
|
|
174
|
+
"forbidden_scope",
|
|
175
|
+
"ambiguous_credentials",
|
|
176
|
+
"credential_revoked",
|
|
177
|
+
"instance_disconnected",
|
|
178
|
+
"instance_pending_approval",
|
|
179
|
+
"not_connection_owner",
|
|
180
|
+
"integration_disabled",
|
|
181
|
+
"integration_revoked",
|
|
182
|
+
"denied_by_policy",
|
|
183
|
+
"integration_not_available",
|
|
184
|
+
"entitlement_required",
|
|
185
|
+
"tier_required",
|
|
186
|
+
"limit_exceeded",
|
|
187
|
+
"rate_limited",
|
|
188
|
+
"idempotency_mismatch",
|
|
189
|
+
"idempotency_in_progress",
|
|
190
|
+
"stale_version",
|
|
191
|
+
"module_disabled",
|
|
192
|
+
"handle_taken",
|
|
193
|
+
"handle_reserved",
|
|
194
|
+
"handle_retired",
|
|
195
|
+
"handle_invalid",
|
|
196
|
+
"handle_held",
|
|
197
|
+
"handle_held_by_you",
|
|
198
|
+
"code_invalid",
|
|
199
|
+
"code_expired",
|
|
200
|
+
"product_mismatch",
|
|
201
|
+
"product_not_supported",
|
|
202
|
+
"key_mismatch",
|
|
203
|
+
"signature_invalid",
|
|
204
|
+
"unlinked_org",
|
|
205
|
+
"schema_violation",
|
|
206
|
+
"mirror_owned_field",
|
|
207
|
+
"illegal_transition",
|
|
208
|
+
"already_exists",
|
|
209
|
+
"already_completed",
|
|
210
|
+
"billing_active",
|
|
211
|
+
"sso_required",
|
|
212
|
+
"reauth_required",
|
|
213
|
+
"session_required",
|
|
214
|
+
"step_up_required",
|
|
215
|
+
"session_bound",
|
|
216
|
+
"authorization_pending",
|
|
217
|
+
"slow_down",
|
|
218
|
+
"expired_token",
|
|
219
|
+
"already_connected",
|
|
220
|
+
"already_linked",
|
|
221
|
+
"already_claimed",
|
|
222
|
+
"invalid_client",
|
|
223
|
+
"public_jwk_invalid",
|
|
224
|
+
"identifier_claimed",
|
|
225
|
+
"salt_version_unknown",
|
|
226
|
+
"salt_version_retired",
|
|
227
|
+
"hashes_invalid",
|
|
228
|
+
"lookup_key_required",
|
|
229
|
+
"required_component",
|
|
230
|
+
"resync_required",
|
|
231
|
+
"last_owner",
|
|
232
|
+
"last_auth_method",
|
|
233
|
+
"instances_linked",
|
|
234
|
+
"install_in_progress",
|
|
235
|
+
"slug_reserved",
|
|
236
|
+
"checklist_incomplete",
|
|
237
|
+
"scope_version_outdated",
|
|
238
|
+
"method_not_allowed",
|
|
239
|
+
"payload_too_large",
|
|
240
|
+
"unsupported_media_type",
|
|
241
|
+
"gone",
|
|
242
|
+
"unavailable",
|
|
243
|
+
"upstream",
|
|
244
|
+
"database_absent",
|
|
245
|
+
"database_unreachable",
|
|
246
|
+
"topic_private",
|
|
247
|
+
"keys_unavailable",
|
|
248
|
+
"internal_error"
|
|
249
|
+
];
|
|
250
|
+
var CODES = new Set(PROBLEM_CODES);
|
|
251
|
+
|
|
4
252
|
// ../../contracts/dist/index.js
|
|
5
253
|
var USER_SELECTABLE_WORK_KINDS = [
|
|
6
254
|
"website",
|
|
@@ -803,6 +1051,8 @@ var FLEET_JOB_DEFAULT_QUEUED_MAX_AGE_SEC = Object.freeze({
|
|
|
803
1051
|
});
|
|
804
1052
|
var FLEET_JOB_MAX_QUEUED_MAX_AGE_SEC = 7 * 24 * 60 * 60;
|
|
805
1053
|
var FLEET_AGENT_EXECUTION_MAX_INSTRUCTIONS_BYTES = 160 * 1024;
|
|
1054
|
+
var FLEET_AGENT_TASK_TIMELINE_MAX_BYTES = 48 * 1024;
|
|
1055
|
+
var FLEET_AGENT_TASK_TRANSCRIPT_MAX_BYTES = 64 * 1024;
|
|
806
1056
|
var FLEET_AGENT_TASK_QUESTION_MAX_FILE_BYTES = 64 * 1024;
|
|
807
1057
|
var FLEET_AGENT_TASK_QUESTION_MAX_CONTEXT_BYTES = 6 * 1024;
|
|
808
1058
|
var FLEET_MAX_DAILY_COST_CEILING_CENTS = 1e5 * 100;
|
|
@@ -1208,6 +1458,11 @@ var READINESS_BLOCKERS = Object.freeze([
|
|
|
1208
1458
|
"withdrawn",
|
|
1209
1459
|
"other-refusals"
|
|
1210
1460
|
]);
|
|
1461
|
+
var EVER_STATS_KEY_HEADER = CONSTANTS.stats_headers.key;
|
|
1462
|
+
var EVER_STATS_SIGNATURE_HEADER = CONSTANTS.stats_headers.signature;
|
|
1463
|
+
var EVER_STATS_KEY_ID_HEADER = CONSTANTS.stats_headers.key_id;
|
|
1464
|
+
var EVER_STATS_SIGNATURE_PREFIX = CONSTANTS.stats_signature_prefix;
|
|
1465
|
+
var EVER_STATS_MAX_BODY_BYTES = CONSTANTS.stats.max_bytes;
|
|
1211
1466
|
|
|
1212
1467
|
// ../../plugin/dist/index.js
|
|
1213
1468
|
var DEFAULT_DIFF_MAX_BYTES = 256 * 1024;
|
|
@@ -408,7 +408,10 @@ var FakeOidcProvider = class _FakeOidcProvider {
|
|
|
408
408
|
return sendJson(response, 404, { error: "not_found" });
|
|
409
409
|
}
|
|
410
410
|
} catch (error) {
|
|
411
|
-
return sendJson(response, 500, {
|
|
411
|
+
return sendJson(response, 500, {
|
|
412
|
+
error: "fake_provider_error",
|
|
413
|
+
error_description: errorDescription(error)
|
|
414
|
+
});
|
|
412
415
|
}
|
|
413
416
|
}
|
|
414
417
|
/** §10.4's "authorize (auto-approve a configured user)", with S256 required. */
|
|
@@ -474,7 +477,7 @@ var FakeOidcProvider = class _FakeOidcProvider {
|
|
|
474
477
|
}
|
|
475
478
|
void this.tokensFor(stored.nonce, stored.scope).then(
|
|
476
479
|
(tokens) => sendJson(response, 200, tokens),
|
|
477
|
-
(error) => sendJson(response, 500, { error: "server_error", error_description:
|
|
480
|
+
(error) => sendJson(response, 500, { error: "server_error", error_description: errorDescription(error) })
|
|
478
481
|
);
|
|
479
482
|
}
|
|
480
483
|
handleDeviceCodeGrant(form, response) {
|
|
@@ -497,7 +500,7 @@ var FakeOidcProvider = class _FakeOidcProvider {
|
|
|
497
500
|
const authorizedParty = this.isLocalClient(grant.clientId) ? grant.clientId : this.clientId;
|
|
498
501
|
void this.tokensFor(null, grant.scope, authorizedParty).then(
|
|
499
502
|
(tokens) => sendJson(response, 200, tokens),
|
|
500
|
-
(error) => sendJson(response, 500, { error: "server_error", error_description:
|
|
503
|
+
(error) => sendJson(response, 500, { error: "server_error", error_description: errorDescription(error) })
|
|
501
504
|
);
|
|
502
505
|
}
|
|
503
506
|
/** RFC 8628 §3.2's device authorization response. */
|
|
@@ -616,14 +619,16 @@ function randomId(prefix) {
|
|
|
616
619
|
}
|
|
617
620
|
function randomUserCode() {
|
|
618
621
|
const alphabet = "BCDFGHJKLMNPQRSTVWXZ";
|
|
619
|
-
const bytes = (0, import_node_crypto.randomBytes)(8);
|
|
620
622
|
let code = "";
|
|
621
623
|
for (let index = 0; index < 8; index += 1) {
|
|
622
624
|
if (index === 4) code += "-";
|
|
623
|
-
code += alphabet[
|
|
625
|
+
code += alphabet[(0, import_node_crypto.randomInt)(alphabet.length)];
|
|
624
626
|
}
|
|
625
627
|
return code;
|
|
626
628
|
}
|
|
629
|
+
function errorDescription(error) {
|
|
630
|
+
return error instanceof Error ? error.message : "unexpected fake provider failure";
|
|
631
|
+
}
|
|
627
632
|
function sendJson(response, status, body) {
|
|
628
633
|
const payload = JSON.stringify(body);
|
|
629
634
|
response.writeHead(status, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/testing/fake-oidc-provider.ts
|
|
2
|
-
import { createHash, createSign, generateKeyPairSync, randomBytes } from "crypto";
|
|
2
|
+
import { createHash, createSign, generateKeyPairSync, randomBytes, randomInt } from "crypto";
|
|
3
3
|
import { createServer } from "http";
|
|
4
4
|
var FAKE_BACKCHANNEL_LOGOUT_EVENT = "http://schemas.openid.net/event/backchannel-logout";
|
|
5
5
|
var FAKE_DEFAULT_LOCAL_CLIENT_ID = "ever-works-cli";
|
|
@@ -380,7 +380,10 @@ var FakeOidcProvider = class _FakeOidcProvider {
|
|
|
380
380
|
return sendJson(response, 404, { error: "not_found" });
|
|
381
381
|
}
|
|
382
382
|
} catch (error) {
|
|
383
|
-
return sendJson(response, 500, {
|
|
383
|
+
return sendJson(response, 500, {
|
|
384
|
+
error: "fake_provider_error",
|
|
385
|
+
error_description: errorDescription(error)
|
|
386
|
+
});
|
|
384
387
|
}
|
|
385
388
|
}
|
|
386
389
|
/** §10.4's "authorize (auto-approve a configured user)", with S256 required. */
|
|
@@ -446,7 +449,7 @@ var FakeOidcProvider = class _FakeOidcProvider {
|
|
|
446
449
|
}
|
|
447
450
|
void this.tokensFor(stored.nonce, stored.scope).then(
|
|
448
451
|
(tokens) => sendJson(response, 200, tokens),
|
|
449
|
-
(error) => sendJson(response, 500, { error: "server_error", error_description:
|
|
452
|
+
(error) => sendJson(response, 500, { error: "server_error", error_description: errorDescription(error) })
|
|
450
453
|
);
|
|
451
454
|
}
|
|
452
455
|
handleDeviceCodeGrant(form, response) {
|
|
@@ -469,7 +472,7 @@ var FakeOidcProvider = class _FakeOidcProvider {
|
|
|
469
472
|
const authorizedParty = this.isLocalClient(grant.clientId) ? grant.clientId : this.clientId;
|
|
470
473
|
void this.tokensFor(null, grant.scope, authorizedParty).then(
|
|
471
474
|
(tokens) => sendJson(response, 200, tokens),
|
|
472
|
-
(error) => sendJson(response, 500, { error: "server_error", error_description:
|
|
475
|
+
(error) => sendJson(response, 500, { error: "server_error", error_description: errorDescription(error) })
|
|
473
476
|
);
|
|
474
477
|
}
|
|
475
478
|
/** RFC 8628 §3.2's device authorization response. */
|
|
@@ -588,14 +591,16 @@ function randomId(prefix) {
|
|
|
588
591
|
}
|
|
589
592
|
function randomUserCode() {
|
|
590
593
|
const alphabet = "BCDFGHJKLMNPQRSTVWXZ";
|
|
591
|
-
const bytes = randomBytes(8);
|
|
592
594
|
let code = "";
|
|
593
595
|
for (let index = 0; index < 8; index += 1) {
|
|
594
596
|
if (index === 4) code += "-";
|
|
595
|
-
code += alphabet[
|
|
597
|
+
code += alphabet[randomInt(alphabet.length)];
|
|
596
598
|
}
|
|
597
599
|
return code;
|
|
598
600
|
}
|
|
601
|
+
function errorDescription(error) {
|
|
602
|
+
return error instanceof Error ? error.message : "unexpected fake provider failure";
|
|
603
|
+
}
|
|
599
604
|
function sendJson(response, status, body) {
|
|
600
605
|
const payload = JSON.stringify(body);
|
|
601
606
|
response.writeHead(status, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ever-works/oidc-identity",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "OpenID Connect identity provider plugin (Ever ID) for Ever Works",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Ever Co. LTD",
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
"test:coverage": "vitest run --coverage"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@ever-works/plugin": "^1.2.
|
|
41
|
+
"@ever-works/plugin": "^1.2.4"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"jose": "^6",
|
|
45
45
|
"openid-client": "^6"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@ever-works/plugin": "^1.2.
|
|
48
|
+
"@ever-works/plugin": "^1.2.4",
|
|
49
49
|
"@types/node": "^26.6.4",
|
|
50
50
|
"ajv": "^8.18.0",
|
|
51
51
|
"ajv-formats": "^3.0.1",
|
|
@@ -81,8 +81,8 @@
|
|
|
81
81
|
"url": "https://github.com/ever-works/ever-works/issues"
|
|
82
82
|
},
|
|
83
83
|
"everworksRelease": {
|
|
84
|
-
"contentHash": "sha256:
|
|
85
|
-
"commit": "
|
|
86
|
-
"source": "https://github.com/ever-works/ever-works/tree/
|
|
84
|
+
"contentHash": "sha256:fd87fb87b04782650a8a9657fc6ba13145f151c17a18cc55664085b6b31c03e7",
|
|
85
|
+
"commit": "5afea18479322951b23246dd492a05dc332e90ca",
|
|
86
|
+
"source": "https://github.com/ever-works/ever-works/tree/5afea18479322951b23246dd492a05dc332e90ca/packages/plugins/oidc-identity"
|
|
87
87
|
}
|
|
88
88
|
}
|