@ibgib/web-gib 0.0.50 → 0.0.51

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.
@@ -10,5 +10,5 @@
10
10
  /**
11
11
  * this is the version of this package, auto-updated in the build process
12
12
  */
13
- export declare const AUTO_GENERATED_VERSION = "0.0.50";
13
+ export declare const AUTO_GENERATED_VERSION = "0.0.51";
14
14
  //# sourceMappingURL=AUTO-GENERATED-version.d.mts.map
@@ -10,5 +10,5 @@
10
10
  /**
11
11
  * this is the version of this package, auto-updated in the build process
12
12
  */
13
- export const AUTO_GENERATED_VERSION = '0.0.50';
13
+ export const AUTO_GENERATED_VERSION = '0.0.51';
14
14
  //# sourceMappingURL=AUTO-GENERATED-version.mjs.map
@@ -1,4 +1,6 @@
1
1
  import { KeystoneChallengePool } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
2
+ import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
3
+ import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
2
4
  import { SsoServerConfig, SsoProviderId, OAuthUserInfo, SsoProviderServerConfig, SsoProviderClientConfig } from './sso-types.mjs';
3
5
  /**
4
6
  * Server-side service for token exchange, JWT validation, and user profile normalization.
@@ -112,7 +114,14 @@ export declare class SsoCustodianService {
112
114
  * - Visibility: Public (Derivation salt, safe for ledger).
113
115
  * - Generator: Client (Generated on user's device).
114
116
  */
115
- createCustodianChallengePool(providerKey: string, userNonce: string): Promise<KeystoneChallengePool>;
117
+ createCustodianChallengePool({ providerId, providerKey, userNonce, keystoneAddr, metaspace, space, }: {
118
+ providerId: string;
119
+ providerKey: string;
120
+ userNonce: string;
121
+ keystoneAddr: string;
122
+ metaspace: MetaspaceService;
123
+ space: IbGibSpaceAny;
124
+ }): Promise<KeystoneChallengePool>;
116
125
  /**
117
126
  * Maps private server configuration to safe public client configurations.
118
127
  *
@@ -121,5 +130,10 @@ export declare class SsoCustodianService {
121
130
  * - Generator: Server (Extracted from the HTTP request context headers/protocol).
122
131
  */
123
132
  getSsoClientConfigs(hostUrl: string): SsoProviderClientConfig[];
133
+ /**
134
+ * Revokes an active OAuth access or refresh token with the provider.
135
+ * Keeps token revocation logic DRY and centralized.
136
+ */
137
+ revokeToken(providerId: SsoProviderId, token: string): Promise<void>;
124
138
  }
125
139
  //# sourceMappingURL=sso-custodian-service.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sso-custodian-service.d.mts","sourceRoot":"","sources":["../../../src/identity/sso/sso-custodian-service.mts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAK3G,OAAO,EACH,eAAe,EACf,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EAC1B,MAAM,iBAAiB,CAAC;AAgBzB;;GAEG;AACH,qBAAa,mBAAmB;IAYhB,OAAO,CAAC,MAAM;IAX1B,OAAO,CAAC,EAAE,CAAmC;IAG7C,OAAO,CAAC,SAAS,CAAwE;IACzF,OAAO,CAAC,SAAS,CAAuB;IAExC;;;;OAIG;gBACiB,MAAM,EAAE,eAAe;IAE3C;;;;;;;;;;;;;;OAcG;IACG,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA8B5G;;;;;;;OAOG;IACG,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiC5E;;;;;;;;;;;;;;OAcG;YACW,qBAAqB;IAoCnC;;;;;;;;;;OAUG;YACW,2BAA2B;IAkCzC;;;;;;;;;;OAUG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAuD5F;;;;;;OAMG;YACW,WAAW;IA8BzB;;;;;;;;;;;OAWG;IACG,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAazF;;;;;;;;;;;OAWG;IACG,4BAA4B,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC;IA8CjC;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,EAAE;CAyBlE"}
1
+ {"version":3,"file":"sso-custodian-service.d.mts","sourceRoot":"","sources":["../../../src/identity/sso/sso-custodian-service.mts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,qBAAqB,EAAsB,MAAM,kDAAkD,CAAC;AAK/H,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACrF,OAAO,EACH,eAAe,EACf,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EAC1B,MAAM,iBAAiB,CAAC;AAgBzB;;GAEG;AACH,qBAAa,mBAAmB;IAYhB,OAAO,CAAC,MAAM;IAX1B,OAAO,CAAC,EAAE,CAAmC;IAG7C,OAAO,CAAC,SAAS,CAAwE;IACzF,OAAO,CAAC,SAAS,CAAuB;IAExC;;;;OAIG;gBACiB,MAAM,EAAE,eAAe;IAE3C;;;;;;;;;;;;;;OAcG;IACG,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA8B5G;;;;;;;OAOG;IACG,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiC5E;;;;;;;;;;;;;;OAcG;YACW,qBAAqB;IAoCnC;;;;;;;;;;OAUG;YACW,2BAA2B;IAkCzC;;;;;;;;;;OAUG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAuD5F;;;;;;OAMG;YACW,WAAW;IA8BzB;;;;;;;;;;;OAWG;IACG,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAazF;;;;;;;;;;;OAWG;IACG,4BAA4B,CAAC,EAC/B,UAAU,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACT,KAAK,GACR,EAAE;QACC,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAyElC;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,EAAE;IA0B/D;;;OAGG;IACG,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyC7E"}
@@ -1,8 +1,8 @@
1
1
  import { createPublicKey, verify } from 'node:crypto';
2
- import { hash, HashAlgorithm } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
2
+ import { hash, HashAlgorithm, extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
3
3
  import { kdf_recursiveSaltWrap } from '@ibgib/core-gib/dist/keystone/kdf/kdf-helpers.mjs';
4
- import { POOL_ID_CUSTODIAN_MANAGE, KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
5
- import { createStandardPoolConfig } from '@ibgib/core-gib/dist/keystone/keystone-config-builder.mjs';
4
+ import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
5
+ import { KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE, POOL_ID_MANAGE, KEYSTONE_POOL_ID_REGEXP } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
6
6
  import { generateOpaqueChallengeId } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
7
7
  import { KeystoneStrategyFactory } from '@ibgib/core-gib/dist/keystone/strategy/keystone-strategy-factory.mjs';
8
8
  /**
@@ -300,18 +300,41 @@ export class SsoCustodianService {
300
300
  * - Visibility: Public (Derivation salt, safe for ledger).
301
301
  * - Generator: Client (Generated on user's device).
302
302
  */
303
- async createCustodianChallengePool(providerKey, userNonce) {
303
+ async createCustodianChallengePool({ providerId, providerKey, userNonce, keystoneAddr, metaspace, space, }) {
304
+ // 1. Fetch target keystone
305
+ const keystoneService = new KeystoneService_V1();
306
+ const targetKeystone = await keystoneService.getLatestKeystone({
307
+ addr: keystoneAddr,
308
+ metaspace,
309
+ space
310
+ });
311
+ if (!targetKeystone) {
312
+ throw new Error(`Keystone not found for address: ${keystoneAddr} (E: 8a9c2b1d3e5f6a7b8c9d0e1f2a3b4c5d)`);
313
+ }
314
+ // 2. Locate native manage pool
315
+ const userManagePool = targetKeystone.data?.challengePools.find(p => p.id === POOL_ID_MANAGE);
316
+ if (!userManagePool) {
317
+ throw new Error(`Keystone manage pool not found. Custodian manage pool must match the user manage pool's security config. (E: 7c4e5f6a7b8c9d0e1f2a3b4c5e6f7a8b)`);
318
+ }
319
+ // 3. Dynamic poolId based on providerId with regex validation
320
+ if (!providerId || !KEYSTONE_POOL_ID_REGEXP.test(providerId)) {
321
+ throw new Error(`Invalid providerId: "${providerId}". Must match ${KEYSTONE_POOL_ID_REGEXP} (E: 3a2c4e5f6a7b8c9d0e1f2a3b4c5e6f)`);
322
+ }
323
+ const poolId = `custodian-manage-${providerId}`;
324
+ // 4. Derive delegate secrets
304
325
  const custodianSecret = await this.deriveServerDelegateSecret(providerKey, userNonce);
305
326
  const poolSalt = await hash({
306
327
  s: `${providerKey}:${userNonce}:salt`,
307
328
  algorithm: HashAlgorithm.sha_256
308
329
  });
309
330
  const poolSaltShort = poolSalt.substring(0, 16);
310
- const config = createStandardPoolConfig({
311
- id: POOL_ID_CUSTODIAN_MANAGE,
312
- salt: poolSaltShort
313
- });
314
- config.allowedVerbs = [KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE];
331
+ // 5. Clone user's manage pool config, updating only ID, salt, and allowedVerbs
332
+ const config = {
333
+ ...userManagePool.config,
334
+ id: poolId,
335
+ salt: poolSaltShort,
336
+ allowedVerbs: [KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE]
337
+ };
315
338
  const strategy = KeystoneStrategyFactory.create({ config });
316
339
  const poolSecret = await strategy.derivePoolSecret({ masterSecret: custodianSecret });
317
340
  const challenges = {};
@@ -330,7 +353,7 @@ export class SsoCustodianService {
330
353
  challenges[challengeId] = await strategy.generateChallenge({ solution });
331
354
  }
332
355
  return {
333
- id: POOL_ID_CUSTODIAN_MANAGE,
356
+ id: poolId,
334
357
  config,
335
358
  challenges,
336
359
  isForeign: true,
@@ -369,5 +392,52 @@ export class SsoCustodianService {
369
392
  }
370
393
  return configs;
371
394
  }
395
+ /**
396
+ * Revokes an active OAuth access or refresh token with the provider.
397
+ * Keeps token revocation logic DRY and centralized.
398
+ */
399
+ async revokeToken(providerId, token) {
400
+ const lc = `${this.lc}[${this.revokeToken.name}]`;
401
+ const providerConfig = this.config.providers[providerId];
402
+ if (!providerConfig) {
403
+ throw new Error(`SSO provider "${providerId}" config is missing. (E: r28900abfefd23e89cf78f57)`);
404
+ }
405
+ try {
406
+ if (providerId === 'google') {
407
+ const res = await fetch(`https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)}`, {
408
+ method: 'POST',
409
+ headers: {
410
+ 'Content-Type': 'application/x-www-form-urlencoded'
411
+ }
412
+ });
413
+ if (!res.ok) {
414
+ const text = await res.text();
415
+ console.warn(`${lc} Google token revocation returned status ${res.status}: ${text}`);
416
+ }
417
+ }
418
+ else if (providerId === 'github') {
419
+ const auth = Buffer.from(`${providerConfig.clientId}:${providerConfig.clientSecret}`).toString('base64');
420
+ const res = await fetch(`https://api.github.com/applications/${providerConfig.clientId}/grant`, {
421
+ method: 'DELETE',
422
+ headers: {
423
+ 'Authorization': `Basic ${auth}`,
424
+ 'Accept': 'application/vnd.github.v3+json',
425
+ 'User-Agent': 'space-gib-server'
426
+ },
427
+ body: JSON.stringify({ access_token: token })
428
+ });
429
+ if (!res.ok && res.status !== 404) {
430
+ const text = await res.text();
431
+ console.warn(`${lc} GitHub token revocation returned status ${res.status}: ${text}`);
432
+ }
433
+ }
434
+ else {
435
+ throw new Error(`Unsupported provider: ${providerId} (E: e28900abfefd23e89cf78f58)`);
436
+ }
437
+ }
438
+ catch (error) {
439
+ console.error(`${lc} Token revocation failed for provider ${providerId}: ${extractErrorMsg(error)}`);
440
+ }
441
+ }
372
442
  }
373
443
  //# sourceMappingURL=sso-custodian-service.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sso-custodian-service.mjs","sourceRoot":"","sources":["../../../src/identity/sso/sso-custodian-service.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sso-custodian-service.mjs","sourceRoot":"","sources":["../../../src/identity/sso/sso-custodian-service.mts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { generateKeyPairSync, createSign } from 'node:crypto';
2
2
  import { respecfully, ifWeMight, iReckon, firstOfAll, lastOfAll } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
3
3
  import { SsoCustodianService } from './sso-custodian-service.mjs';
4
- import { POOL_ID_CUSTODIAN_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
4
+ import { POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
5
+ import { createStandardPoolConfig } from '@ibgib/core-gib/dist/keystone/keystone-config-builder.mjs';
5
6
  const maam = `[${import.meta.url}]`, sir = maam;
6
7
  await respecfully(sir, 'SsoCustodianService', async () => {
7
8
  let mockPrivateKey;
@@ -154,14 +155,100 @@ await respecfully(sir, 'SsoCustodianService', async () => {
154
155
  const service = new SsoCustodianService(config);
155
156
  const key = 'google:123456789';
156
157
  const nonce = 'nonce-abc-123';
157
- const custodianPool = await service.createCustodianChallengePool(key, nonce);
158
+ // 1. Create a mock target keystone containing a 'manage' pool
159
+ const userManageConfig = createStandardPoolConfig({
160
+ id: POOL_ID_MANAGE,
161
+ salt: 'user-manage-salt'
162
+ });
163
+ userManageConfig.behavior.size = 12; // custom size for verification
164
+ const mockTargetKeystone = {
165
+ ib: 'keystone^some-tjp-addr',
166
+ gib: 'some-gib-value',
167
+ data: {
168
+ challengePools: [
169
+ {
170
+ id: 'manage',
171
+ config: userManageConfig,
172
+ challenges: { 'chal1': 'val1' }
173
+ }
174
+ ],
175
+ n: 0
176
+ }
177
+ };
178
+ // 2. Mock metaspace and space calls
179
+ const mockSpace = {};
180
+ const mockMetaspace = {
181
+ getLatestAddr: async () => 'latest-keystone-addr',
182
+ get: async () => ({
183
+ success: true,
184
+ ibGibs: [mockTargetKeystone]
185
+ })
186
+ };
187
+ const custodianPool = await service.createCustodianChallengePool({
188
+ providerId: 'google',
189
+ providerKey: key,
190
+ userNonce: nonce,
191
+ keystoneAddr: 'some-tjp-addr',
192
+ metaspace: mockMetaspace,
193
+ space: mockSpace
194
+ });
158
195
  iReckon(sir, custodianPool).not.isGonnaBeUndefined();
159
- iReckon(sir, custodianPool.id).willEqual(POOL_ID_CUSTODIAN_MANAGE);
196
+ iReckon(sir, custodianPool.id).willEqual('custodian-manage-google');
160
197
  iReckon(sir, custodianPool.isForeign).isGonnaBeTrue();
161
198
  iReckon(sir, custodianPool.metadata?.providerKey).willEqual(key);
199
+ // Replicated behavior size from parent manage pool config
200
+ iReckon(sir, custodianPool.config.behavior.size).willEqual(userManageConfig.behavior.size);
162
201
  // Structural validation of challenges
163
202
  const challengesCount = Object.keys(custodianPool.challenges).length;
164
203
  iReckon(sir, challengesCount).willEqual(custodianPool.config.behavior.size);
165
204
  });
205
+ await ifWeMight(sir, 'revoke tokens successfully, making the correct http fetch calls', async () => {
206
+ const config = {
207
+ ssoServerKdfSecret: 'high-entropy-server-kdf-secret',
208
+ sessionSecret: 'session-secret-123',
209
+ providers: {
210
+ google: {
211
+ providerId: 'google',
212
+ clientId: 'google-client-id-abc',
213
+ clientSecret: 'google-client-secret-abc',
214
+ tokenUrl: 'https://oauth2.googleapis.com/token',
215
+ userInfoUrl: 'https://openidconnect.googleapis.com/v1/userinfo'
216
+ },
217
+ github: {
218
+ providerId: 'github',
219
+ clientId: 'github-client-id-xyz',
220
+ clientSecret: 'github-client-secret-xyz',
221
+ tokenUrl: 'https://github.com/login/oauth/access_token',
222
+ userInfoUrl: 'https://api.github.com/user'
223
+ }
224
+ }
225
+ };
226
+ const service = new SsoCustodianService(config);
227
+ const originalFetch = globalThis.fetch;
228
+ let fetchCalls = [];
229
+ globalThis.fetch = (async (url, options) => {
230
+ fetchCalls.push({ url, options });
231
+ return {
232
+ ok: true,
233
+ status: 200,
234
+ text: async () => 'ok'
235
+ };
236
+ });
237
+ try {
238
+ // Revoke Google token
239
+ await service.revokeToken('google', 'google-test-token-123');
240
+ iReckon(sir, fetchCalls.length).willEqual(1);
241
+ iReckon(sir, fetchCalls[0].url).includes('google-test-token-123');
242
+ // Revoke GitHub token
243
+ await service.revokeToken('github', 'github-test-token-456');
244
+ iReckon(sir, fetchCalls.length).willEqual(2);
245
+ iReckon(sir, fetchCalls[1].url).includes('/applications/github-client-id-xyz/grant');
246
+ iReckon(sir, fetchCalls[1].options.method).willEqual('DELETE');
247
+ iReckon(sir, fetchCalls[1].options.headers['Authorization']).includes('Basic');
248
+ }
249
+ finally {
250
+ globalThis.fetch = originalFetch;
251
+ }
252
+ });
166
253
  });
167
254
  //# sourceMappingURL=sso-custodian-service.respec.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sso-custodian-service.respec.mjs","sourceRoot":"","sources":["../../../src/identity/sso/sso-custodian-service.respec.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sso-custodian-service.respec.mjs","sourceRoot":"","sources":["../../../src/identity/sso/sso-custodian-service.respec.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { KeystoneIbGib_V1 } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
2
+ /**
3
+ * Checks if a keystone contains a custodian challenge pool for the given provider.
4
+ * Client-safe & server-safe with zero dependencies.
5
+ */
6
+ export declare function isSsoProviderLinked({ keystone, providerId }: {
7
+ keystone: KeystoneIbGib_V1 | null | undefined;
8
+ providerId: string;
9
+ }): boolean;
10
+ //# sourceMappingURL=sso-helpers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-helpers.d.mts","sourceRoot":"","sources":["../../../src/identity/sso/sso-helpers.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,QAAQ,EACR,UAAU,EACb,EAAE;IACC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAIV"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Checks if a keystone contains a custodian challenge pool for the given provider.
3
+ * Client-safe & server-safe with zero dependencies.
4
+ */
5
+ export function isSsoProviderLinked({ keystone, providerId }) {
6
+ if (!keystone?.data?.challengePools)
7
+ return false;
8
+ const targetPoolId = `custodian-manage-${providerId}`;
9
+ return keystone.data.challengePools.some(p => p.id === targetPoolId);
10
+ }
11
+ //# sourceMappingURL=sso-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-helpers.mjs","sourceRoot":"","sources":["../../../src/identity/sso/sso-helpers.mts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAChC,QAAQ,EACR,UAAU,EAIb;IACG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,YAAY,GAAG,oBAAoB,UAAU,EAAE,CAAC;IACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;AACzE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibgib/web-gib",
3
- "version": "0.0.50",
3
+ "version": "0.0.51",
4
4
  "description": "Framework for creating agentic ibGib web apps. Contains plumbing for ibgib components, agentic framework (currently only Gemini implemented), web-based IndexedDB storage substrate, and more.",
5
5
  "funding": {
6
6
  "type": "individual",
@@ -29,7 +29,7 @@
29
29
  "license": "ISC",
30
30
  "dependencies": {
31
31
  "@google/genai": "^1.33.0",
32
- "@ibgib/core-gib": "^0.1.64",
32
+ "@ibgib/core-gib": "^0.1.65",
33
33
  "@ibgib/encrypt-gib": "^0.2.37",
34
34
  "@ibgib/helper-gib": "^0.0.36",
35
35
  "@ibgib/ts-gib": "^0.5.33"
@@ -11,4 +11,4 @@
11
11
  /**
12
12
  * this is the version of this package, auto-updated in the build process
13
13
  */
14
- export const AUTO_GENERATED_VERSION = '0.0.50';
14
+ export const AUTO_GENERATED_VERSION = '0.0.51';
@@ -1,13 +1,15 @@
1
1
  import { createPublicKey, verify } from 'node:crypto';
2
- import { hash, HashAlgorithm } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
2
+ import { hash, HashAlgorithm, extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
3
3
  import { kdf_recursiveSaltWrap } from '@ibgib/core-gib/dist/keystone/kdf/kdf-helpers.mjs';
4
4
  import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
5
5
  import { KeystoneProfileBuilder } from '@ibgib/core-gib/dist/keystone/policy/keystone-profile-builder.mjs';
6
- import { KeystoneIbGib_V1, KeystoneChallengePool } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
7
- import { POOL_ID_CUSTODIAN_MANAGE, KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
6
+ import { KeystoneIbGib_V1, KeystoneChallengePool, KeystonePoolConfig } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
7
+ import { POOL_ID_CUSTODIAN_MANAGE, KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE, POOL_ID_MANAGE, KEYSTONE_POOL_ID_REGEXP } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
8
8
  import { createStandardPoolConfig } from '@ibgib/core-gib/dist/keystone/keystone-config-builder.mjs';
9
9
  import { generateOpaqueChallengeId } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
10
10
  import { KeystoneStrategyFactory } from '@ibgib/core-gib/dist/keystone/strategy/keystone-strategy-factory.mjs';
11
+ import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
12
+ import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
11
13
  import {
12
14
  SsoServerConfig,
13
15
  SsoProviderId,
@@ -369,10 +371,46 @@ export class SsoCustodianService {
369
371
  * - Visibility: Public (Derivation salt, safe for ledger).
370
372
  * - Generator: Client (Generated on user's device).
371
373
  */
372
- async createCustodianChallengePool(
373
- providerKey: string,
374
- userNonce: string,
375
- ): Promise<KeystoneChallengePool> {
374
+ async createCustodianChallengePool({
375
+ providerId,
376
+ providerKey,
377
+ userNonce,
378
+ keystoneAddr,
379
+ metaspace,
380
+ space,
381
+ }: {
382
+ providerId: string;
383
+ providerKey: string;
384
+ userNonce: string;
385
+ keystoneAddr: string;
386
+ metaspace: MetaspaceService;
387
+ space: IbGibSpaceAny;
388
+ }): Promise<KeystoneChallengePool> {
389
+ // 1. Fetch target keystone
390
+ const keystoneService = new KeystoneService_V1();
391
+ const targetKeystone = await keystoneService.getLatestKeystone({
392
+ addr: keystoneAddr,
393
+ metaspace,
394
+ space
395
+ });
396
+
397
+ if (!targetKeystone) {
398
+ throw new Error(`Keystone not found for address: ${keystoneAddr} (E: 8a9c2b1d3e5f6a7b8c9d0e1f2a3b4c5d)`);
399
+ }
400
+
401
+ // 2. Locate native manage pool
402
+ const userManagePool = targetKeystone.data?.challengePools.find(p => p.id === POOL_ID_MANAGE);
403
+ if (!userManagePool) {
404
+ throw new Error(`Keystone manage pool not found. Custodian manage pool must match the user manage pool's security config. (E: 7c4e5f6a7b8c9d0e1f2a3b4c5e6f7a8b)`);
405
+ }
406
+
407
+ // 3. Dynamic poolId based on providerId with regex validation
408
+ if (!providerId || !KEYSTONE_POOL_ID_REGEXP.test(providerId)) {
409
+ throw new Error(`Invalid providerId: "${providerId}". Must match ${KEYSTONE_POOL_ID_REGEXP} (E: 3a2c4e5f6a7b8c9d0e1f2a3b4c5e6f)`);
410
+ }
411
+ const poolId = `custodian-manage-${providerId}`;
412
+
413
+ // 4. Derive delegate secrets
376
414
  const custodianSecret = await this.deriveServerDelegateSecret(providerKey, userNonce);
377
415
 
378
416
  const poolSalt = await hash({
@@ -381,11 +419,13 @@ export class SsoCustodianService {
381
419
  });
382
420
  const poolSaltShort = poolSalt.substring(0, 16);
383
421
 
384
- const config = createStandardPoolConfig({
385
- id: POOL_ID_CUSTODIAN_MANAGE,
386
- salt: poolSaltShort
387
- });
388
- config.allowedVerbs = [KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE];
422
+ // 5. Clone user's manage pool config, updating only ID, salt, and allowedVerbs
423
+ const config: KeystonePoolConfig = {
424
+ ...userManagePool.config,
425
+ id: poolId,
426
+ salt: poolSaltShort,
427
+ allowedVerbs: [KEYSTONE_VERB_MANAGE, KEYSTONE_VERB_REVOKE]
428
+ };
389
429
 
390
430
  const strategy = KeystoneStrategyFactory.create({ config });
391
431
  const poolSecret = await strategy.derivePoolSecret({ masterSecret: custodianSecret });
@@ -407,7 +447,7 @@ export class SsoCustodianService {
407
447
  }
408
448
 
409
449
  return {
410
- id: POOL_ID_CUSTODIAN_MANAGE,
450
+ id: poolId,
411
451
  config,
412
452
  challenges,
413
453
  isForeign: true,
@@ -450,4 +490,50 @@ export class SsoCustodianService {
450
490
 
451
491
  return configs;
452
492
  }
493
+
494
+ /**
495
+ * Revokes an active OAuth access or refresh token with the provider.
496
+ * Keeps token revocation logic DRY and centralized.
497
+ */
498
+ async revokeToken(providerId: SsoProviderId, token: string): Promise<void> {
499
+ const lc = `${this.lc}[${this.revokeToken.name}]`;
500
+ const providerConfig = this.config.providers[providerId];
501
+ if (!providerConfig) {
502
+ throw new Error(`SSO provider "${providerId}" config is missing. (E: r28900abfefd23e89cf78f57)`);
503
+ }
504
+
505
+ try {
506
+ if (providerId === 'google') {
507
+ const res = await fetch(`https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)}`, {
508
+ method: 'POST',
509
+ headers: {
510
+ 'Content-Type': 'application/x-www-form-urlencoded'
511
+ }
512
+ });
513
+ if (!res.ok) {
514
+ const text = await res.text();
515
+ console.warn(`${lc} Google token revocation returned status ${res.status}: ${text}`);
516
+ }
517
+ } else if (providerId === 'github') {
518
+ const auth = Buffer.from(`${providerConfig.clientId}:${providerConfig.clientSecret}`).toString('base64');
519
+ const res = await fetch(`https://api.github.com/applications/${providerConfig.clientId}/grant`, {
520
+ method: 'DELETE',
521
+ headers: {
522
+ 'Authorization': `Basic ${auth}`,
523
+ 'Accept': 'application/vnd.github.v3+json',
524
+ 'User-Agent': 'space-gib-server'
525
+ },
526
+ body: JSON.stringify({ access_token: token })
527
+ });
528
+ if (!res.ok && res.status !== 404) {
529
+ const text = await res.text();
530
+ console.warn(`${lc} GitHub token revocation returned status ${res.status}: ${text}`);
531
+ }
532
+ } else {
533
+ throw new Error(`Unsupported provider: ${providerId} (E: e28900abfefd23e89cf78f58)`);
534
+ }
535
+ } catch (error) {
536
+ console.error(`${lc} Token revocation failed for provider ${providerId}: ${extractErrorMsg(error)}`);
537
+ }
538
+ }
453
539
  }
@@ -8,7 +8,8 @@ import {
8
8
  } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
9
9
  import { SsoCustodianService } from './sso-custodian-service.mjs';
10
10
  import { SsoServerConfig } from './sso-types.mjs';
11
- import { POOL_ID_CUSTODIAN_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
11
+ import { POOL_ID_CUSTODIAN_MANAGE, POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
12
+ import { createStandardPoolConfig } from '@ibgib/core-gib/dist/keystone/keystone-config-builder.mjs';
12
13
 
13
14
  const maam = `[${import.meta.url}]`, sir = maam;
14
15
 
@@ -189,18 +190,108 @@ await respecfully(sir, 'SsoCustodianService', async () => {
189
190
  const key = 'google:123456789';
190
191
  const nonce = 'nonce-abc-123';
191
192
 
192
- const custodianPool = await service.createCustodianChallengePool(
193
- key,
194
- nonce
195
- );
193
+ // 1. Create a mock target keystone containing a 'manage' pool
194
+ const userManageConfig = createStandardPoolConfig({
195
+ id: POOL_ID_MANAGE,
196
+ salt: 'user-manage-salt'
197
+ });
198
+ userManageConfig.behavior.size = 12; // custom size for verification
199
+ const mockTargetKeystone = {
200
+ ib: 'keystone^some-tjp-addr',
201
+ gib: 'some-gib-value',
202
+ data: {
203
+ challengePools: [
204
+ {
205
+ id: 'manage',
206
+ config: userManageConfig,
207
+ challenges: { 'chal1': 'val1' }
208
+ }
209
+ ],
210
+ n: 0
211
+ }
212
+ };
213
+
214
+ // 2. Mock metaspace and space calls
215
+ const mockSpace = {};
216
+ const mockMetaspace = {
217
+ getLatestAddr: async () => 'latest-keystone-addr',
218
+ get: async () => ({
219
+ success: true,
220
+ ibGibs: [mockTargetKeystone]
221
+ })
222
+ };
223
+
224
+ const custodianPool = await service.createCustodianChallengePool({
225
+ providerId: 'google',
226
+ providerKey: key,
227
+ userNonce: nonce,
228
+ keystoneAddr: 'some-tjp-addr',
229
+ metaspace: mockMetaspace as any,
230
+ space: mockSpace as any
231
+ });
196
232
 
197
233
  iReckon(sir, custodianPool).not.isGonnaBeUndefined();
198
- iReckon(sir, custodianPool.id).willEqual(POOL_ID_CUSTODIAN_MANAGE);
234
+ iReckon(sir, custodianPool.id).willEqual('custodian-manage-google');
199
235
  iReckon(sir, custodianPool.isForeign).isGonnaBeTrue();
200
236
  iReckon(sir, custodianPool.metadata?.providerKey).willEqual(key);
201
237
 
238
+ // Replicated behavior size from parent manage pool config
239
+ iReckon(sir, custodianPool.config.behavior.size).willEqual(userManageConfig.behavior.size);
240
+
202
241
  // Structural validation of challenges
203
242
  const challengesCount = Object.keys(custodianPool.challenges).length;
204
243
  iReckon(sir, challengesCount).willEqual(custodianPool.config.behavior.size);
205
244
  });
245
+
246
+ await ifWeMight(sir, 'revoke tokens successfully, making the correct http fetch calls', async () => {
247
+ const config: SsoServerConfig = {
248
+ ssoServerKdfSecret: 'high-entropy-server-kdf-secret',
249
+ sessionSecret: 'session-secret-123',
250
+ providers: {
251
+ google: {
252
+ providerId: 'google',
253
+ clientId: 'google-client-id-abc',
254
+ clientSecret: 'google-client-secret-abc',
255
+ tokenUrl: 'https://oauth2.googleapis.com/token',
256
+ userInfoUrl: 'https://openidconnect.googleapis.com/v1/userinfo'
257
+ },
258
+ github: {
259
+ providerId: 'github',
260
+ clientId: 'github-client-id-xyz',
261
+ clientSecret: 'github-client-secret-xyz',
262
+ tokenUrl: 'https://github.com/login/oauth/access_token',
263
+ userInfoUrl: 'https://api.github.com/user'
264
+ }
265
+ }
266
+ };
267
+ const service = new SsoCustodianService(config);
268
+
269
+ const originalFetch = globalThis.fetch;
270
+ let fetchCalls: { url: string, options: any }[] = [];
271
+ globalThis.fetch = (async (url: any, options: any) => {
272
+ fetchCalls.push({ url, options });
273
+ return {
274
+ ok: true,
275
+ status: 200,
276
+ text: async () => 'ok'
277
+ } as any;
278
+ }) as any;
279
+
280
+ try {
281
+ // Revoke Google token
282
+ await service.revokeToken('google', 'google-test-token-123');
283
+ iReckon(sir, fetchCalls.length).willEqual(1);
284
+ iReckon(sir, fetchCalls[0].url).includes('google-test-token-123');
285
+
286
+ // Revoke GitHub token
287
+ await service.revokeToken('github', 'github-test-token-456');
288
+ iReckon(sir, fetchCalls.length).willEqual(2);
289
+ iReckon(sir, fetchCalls[1].url).includes('/applications/github-client-id-xyz/grant');
290
+ iReckon(sir, fetchCalls[1].options.method).willEqual('DELETE');
291
+ iReckon(sir, fetchCalls[1].options.headers['Authorization']).includes('Basic');
292
+ } finally {
293
+ globalThis.fetch = originalFetch;
294
+ }
295
+ });
206
296
  });
297
+
@@ -0,0 +1,17 @@
1
+ import { KeystoneIbGib_V1 } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
2
+
3
+ /**
4
+ * Checks if a keystone contains a custodian challenge pool for the given provider.
5
+ * Client-safe & server-safe with zero dependencies.
6
+ */
7
+ export function isSsoProviderLinked({
8
+ keystone,
9
+ providerId
10
+ }: {
11
+ keystone: KeystoneIbGib_V1 | null | undefined;
12
+ providerId: string;
13
+ }): boolean {
14
+ if (!keystone?.data?.challengePools) return false;
15
+ const targetPoolId = `custodian-manage-${providerId}`;
16
+ return keystone.data.challengePools.some(p => p.id === targetPoolId);
17
+ }