@icp-sdk/auth 10.0.1 → 10.0.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/esm/client/auth-client.d.ts +4 -3
- package/dist/esm/client/auth-client.js +47 -73
- package/dist/esm/client/auth-client.js.map +1 -1
- package/dist/esm/client/session-delegation.d.ts +8 -6
- package/dist/esm/client/session-delegation.js +22 -17
- package/dist/esm/client/session-delegation.js.map +1 -1
- package/package.json +2 -2
- package/src/client/auth-client.ts +57 -78
- package/src/client/session-delegation.ts +33 -23
|
@@ -360,9 +360,10 @@ export declare class AuthClient {
|
|
|
360
360
|
*
|
|
361
361
|
* In 'window' mode the callback lets the identity provider window open while the
|
|
362
362
|
* nonce is still resolving, avoiding a perceived delay before the user sees
|
|
363
|
-
* the prompt;
|
|
364
|
-
*
|
|
365
|
-
*
|
|
363
|
+
* the prompt; the signer keeps the channel open while the request waits for
|
|
364
|
+
* its nonce. In both modes the request takes its place with the signer when
|
|
365
|
+
* this method is called, so it can be issued alongside `signIn` in either
|
|
366
|
+
* order.
|
|
366
367
|
*
|
|
367
368
|
* @param params - Request parameters.
|
|
368
369
|
* @param params.keys - Attribute keys to request (e.g. `['email', 'name']`).
|
|
@@ -438,18 +438,14 @@ export class AuthClient {
|
|
|
438
438
|
this.#interactions += 1;
|
|
439
439
|
}
|
|
440
440
|
/**
|
|
441
|
-
*
|
|
442
|
-
* interaction on it.
|
|
441
|
+
* Takes the lock that makes this the only interaction on the signer channel.
|
|
443
442
|
*
|
|
444
|
-
*
|
|
445
|
-
*
|
|
446
|
-
*
|
|
447
|
-
*
|
|
448
|
-
* is open. Two callers doing that by hand is one place too many for the order
|
|
449
|
-
* to come out backwards.
|
|
443
|
+
* Called right after a request is handed to the signer, which opens the
|
|
444
|
+
* channel within that call: a popup may only be opened from the task the
|
|
445
|
+
* click started, and lock requests in front of it were enough for Chromium to
|
|
446
|
+
* refuse the window, so the lock is asked for once the window exists.
|
|
450
447
|
*/
|
|
451
|
-
|
|
452
|
-
await this.#signer.openChannel();
|
|
448
|
+
#takeChannelLock() {
|
|
453
449
|
if (this.#channelLock === undefined) {
|
|
454
450
|
const lock = stealLock(CHANNEL_LOCK);
|
|
455
451
|
// Whoever took the channel has already renavigated the window this one was
|
|
@@ -519,14 +515,11 @@ export class AuthClient {
|
|
|
519
515
|
// carry across the round trip for the return leg to trust.
|
|
520
516
|
const raw = options?.returnTo;
|
|
521
517
|
const returnTo = raw === undefined ? undefined : this.memoize(() => sameOriginTarget(raw)?.href ?? null);
|
|
522
|
-
//
|
|
523
|
-
//
|
|
524
|
-
//
|
|
525
|
-
//
|
|
526
|
-
//
|
|
527
|
-
// Under `Promise.all([signIn, requestAttributes])` this is what keeps a
|
|
528
|
-
// faster concurrent request from flushing before this flow's delegation
|
|
529
|
-
// request is buffered.
|
|
518
|
+
// Session-key acquisition starts on the call, and the delegation request
|
|
519
|
+
// that needs it is handed to the signer on the call too, as a promise of the
|
|
520
|
+
// request. The signer places it in call order there, so in the redirect
|
|
521
|
+
// flow it replays into the slot it was sent from whatever the key costs on
|
|
522
|
+
// either load, and a `requestAttributes` issued alongside keeps its own.
|
|
530
523
|
const sessionKeyPromise = this.#urlTransport
|
|
531
524
|
? this.#ensureSessionKeyForRedirectFlow(this.#urlTransport)
|
|
532
525
|
: this.#ensureSessionKeyForWindowFlow().then((key) => ({ key }));
|
|
@@ -536,9 +529,21 @@ export class AuthClient {
|
|
|
536
529
|
// surfacing as an unhandled rejection. The `await` below still observes a
|
|
537
530
|
// rejection and propagates it when reached.
|
|
538
531
|
void sessionKeyPromise.catch(() => undefined);
|
|
539
|
-
//
|
|
540
|
-
//
|
|
541
|
-
|
|
532
|
+
// Opens the signer window within the call, which the browser allows only in
|
|
533
|
+
// the tick the click started, so nothing before it may ask the browser for
|
|
534
|
+
// anything.
|
|
535
|
+
const sessionChainPromise = requestSessionDelegation(this.#signer, sessionKeyPromise.then(({ key }) => ({
|
|
536
|
+
sessionPublicKey: key.getPublicKey().toDer(),
|
|
537
|
+
// Both bounds are sent only where the caller asked, so the provider's
|
|
538
|
+
// own defaults apply otherwise rather than numbers this library
|
|
539
|
+
// invented. How long a sign-in lasts is the provider's policy, narrowed
|
|
540
|
+
// by what the user chooses at consent and by an organization's cap.
|
|
541
|
+
maxTimeToLive: options?.maxTimeToLive,
|
|
542
|
+
maxTimeToIdle: options?.maxTimeToIdle,
|
|
543
|
+
derivationOrigin: this.#options.derivationOrigin?.toString(),
|
|
544
|
+
})));
|
|
545
|
+
void sessionChainPromise.catch(() => undefined);
|
|
546
|
+
this.#takeChannelLock();
|
|
542
547
|
// The other lock a ceremony needs, taken once the window is open for the
|
|
543
548
|
// same reason. Stolen rather than queued for, so the newer intent wins and
|
|
544
549
|
// the loser learns of it before writing anything.
|
|
@@ -570,16 +575,7 @@ export class AuthClient {
|
|
|
570
575
|
// an identity whose first request fails for a reason nothing explains.
|
|
571
576
|
throw new Error('A session needs a key that can sign');
|
|
572
577
|
}
|
|
573
|
-
const sessionChain = await
|
|
574
|
-
sessionPublicKey: key.getPublicKey().toDer(),
|
|
575
|
-
// Both bounds are sent only where the caller asked, so the provider's
|
|
576
|
-
// own defaults apply otherwise rather than numbers this library
|
|
577
|
-
// invented. How long a sign-in lasts is the provider's policy, narrowed
|
|
578
|
-
// by what the user chooses at consent and by an organization's cap.
|
|
579
|
-
maxTimeToLive: options?.maxTimeToLive,
|
|
580
|
-
maxTimeToIdle: options?.maxTimeToIdle,
|
|
581
|
-
derivationOrigin: this.#options.derivationOrigin?.toString(),
|
|
582
|
-
});
|
|
578
|
+
const sessionChain = await sessionChainPromise;
|
|
583
579
|
// The chain comes from the signer over a transport shared with others, so
|
|
584
580
|
// the key it delegates to is checked here rather than assumed. A chain for
|
|
585
581
|
// another key mints nothing, and failing now names the cause instead of
|
|
@@ -667,21 +663,10 @@ export class AuthClient {
|
|
|
667
663
|
if (!this.#credentialStorage.durable) {
|
|
668
664
|
throw new Error('A redirect sign-in needs a credential store that survives the navigation, and this one does not. Use a durable store or the window transport.');
|
|
669
665
|
}
|
|
670
|
-
//
|
|
671
|
-
//
|
|
672
|
-
//
|
|
673
|
-
//
|
|
674
|
-
// this hold, a faster concurrent request (e.g. the nonce path of
|
|
675
|
-
// `requestAttributes`) buffers first and trips that flush before this flow's
|
|
676
|
-
// delegation request — issued only once the key is ready — is buffered,
|
|
677
|
-
// splitting what should be one redirect into two.
|
|
678
|
-
//
|
|
679
|
-
// The key is captured in a closure, not read back after the producer: on the
|
|
680
|
-
// FIRST load the producer sets `acquired`, so the delegation request that
|
|
681
|
-
// follows is issued with no intervening storage read — a read there would
|
|
682
|
-
// re-open the very flush gap this closes. The producer is skipped on the
|
|
683
|
-
// replay load (its result is journaled), where the key is instead read from
|
|
684
|
-
// the pending slot.
|
|
666
|
+
// Acquired inside a `memoize` producer, so the first load journals which key
|
|
667
|
+
// this ceremony started with. The key is captured in a closure on the first
|
|
668
|
+
// load, where the producer runs; on the replay load the producer is skipped
|
|
669
|
+
// (its result is journaled) and the key is read from the pending slot.
|
|
685
670
|
//
|
|
686
671
|
// What is journaled is the key's *public* half: not a secret, it survives the
|
|
687
672
|
// redirect as text, and on the return load it says whether the pending slot
|
|
@@ -720,9 +705,10 @@ export class AuthClient {
|
|
|
720
705
|
*
|
|
721
706
|
* In 'window' mode the callback lets the identity provider window open while the
|
|
722
707
|
* nonce is still resolving, avoiding a perceived delay before the user sees
|
|
723
|
-
* the prompt;
|
|
724
|
-
*
|
|
725
|
-
*
|
|
708
|
+
* the prompt; the signer keeps the channel open while the request waits for
|
|
709
|
+
* its nonce. In both modes the request takes its place with the signer when
|
|
710
|
+
* this method is called, so it can be issued alongside `signIn` in either
|
|
711
|
+
* order.
|
|
726
712
|
*
|
|
727
713
|
* @param params - Request parameters.
|
|
728
714
|
* @param params.keys - Attribute keys to request (e.g. `['email', 'name']`).
|
|
@@ -746,15 +732,21 @@ export class AuthClient {
|
|
|
746
732
|
async #runRequestAttributes(params) {
|
|
747
733
|
// In redirect mode the nonce is journaled (base64, since the journal is
|
|
748
734
|
// JSON) so the replay on the return load signs against the same bytes.
|
|
749
|
-
const
|
|
750
|
-
?
|
|
751
|
-
:
|
|
752
|
-
|
|
735
|
+
const nonce = this.#urlTransport
|
|
736
|
+
? this.#urlTransport.memoize(async () => toBase64(await params.nonce()))
|
|
737
|
+
: params.nonce().then(toBase64);
|
|
738
|
+
// Handed to the signer on the call, as a promise of the request: the signer
|
|
739
|
+
// window opens within the call while the nonce is still on its way, and the
|
|
740
|
+
// request keeps its place in call order however long the nonce takes on
|
|
741
|
+
// either load of a redirect flow.
|
|
742
|
+
const responsePromise = this.#signer.sendRequest(nonce.then((value) => ({
|
|
753
743
|
jsonrpc: '2.0',
|
|
754
744
|
id: globalThis.crypto.randomUUID(),
|
|
755
745
|
method: 'ii-icrc3-attributes',
|
|
756
|
-
params: { keys: params.keys, nonce:
|
|
757
|
-
});
|
|
746
|
+
params: { keys: params.keys, nonce: value },
|
|
747
|
+
})));
|
|
748
|
+
this.#takeChannelLock();
|
|
749
|
+
const response = await responsePromise;
|
|
758
750
|
if ('error' in response) {
|
|
759
751
|
throw new Error(response.error.message);
|
|
760
752
|
}
|
|
@@ -835,24 +827,6 @@ export class AuthClient {
|
|
|
835
827
|
}
|
|
836
828
|
}
|
|
837
829
|
}
|
|
838
|
-
// Popup-mode nonce resolution. Start the fetch, then open the transport
|
|
839
|
-
// channel so the identity provider window is visible while we wait, and
|
|
840
|
-
// suspend auto-close so it can't fire mid-await (e.g. due to a close
|
|
841
|
-
// scheduled by a prior request on the same signer). The original auto-close
|
|
842
|
-
// setting is restored before sendRequest, so the next response resumes
|
|
843
|
-
// normal close behaviour.
|
|
844
|
-
async #resolveNonce(nonce) {
|
|
845
|
-
const value = nonce();
|
|
846
|
-
await this.#openSignerChannel();
|
|
847
|
-
const previousAutoClose = this.#signer.autoCloseTransportChannel;
|
|
848
|
-
this.#signer.autoCloseTransportChannel = false;
|
|
849
|
-
try {
|
|
850
|
-
return await value;
|
|
851
|
-
}
|
|
852
|
-
finally {
|
|
853
|
-
this.#signer.autoCloseTransportChannel = previousAutoClose;
|
|
854
|
-
}
|
|
855
|
-
}
|
|
856
830
|
/**
|
|
857
831
|
* Mints ahead of the next request when the page comes back, if one is due.
|
|
858
832
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../../src/client/auth-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../../src/client/auth-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,12 @@ export declare class InteractionRequiredError extends Error {
|
|
|
25
25
|
readonly reason: string | undefined;
|
|
26
26
|
constructor(message: string, reason?: string);
|
|
27
27
|
}
|
|
28
|
+
interface SessionDelegationParams {
|
|
29
|
+
sessionPublicKey: DerEncodedPublicKey;
|
|
30
|
+
maxTimeToLive?: bigint;
|
|
31
|
+
maxTimeToIdle?: bigint;
|
|
32
|
+
derivationOrigin?: string;
|
|
33
|
+
}
|
|
28
34
|
/**
|
|
29
35
|
* Asks the identity provider for a session, and returns the chain it signed.
|
|
30
36
|
*
|
|
@@ -32,9 +38,5 @@ export declare class InteractionRequiredError extends Error {
|
|
|
32
38
|
* something an application can call its own canisters with. It is what app
|
|
33
39
|
* delegations are minted from.
|
|
34
40
|
*/
|
|
35
|
-
export declare function requestSessionDelegation(signer: Signer, params:
|
|
36
|
-
|
|
37
|
-
maxTimeToLive?: bigint;
|
|
38
|
-
maxTimeToIdle?: bigint;
|
|
39
|
-
derivationOrigin?: string;
|
|
40
|
-
}): Promise<DelegationChain>;
|
|
41
|
+
export declare function requestSessionDelegation(signer: Signer, params: SessionDelegationParams | Promise<SessionDelegationParams>): Promise<DelegationChain>;
|
|
42
|
+
export {};
|
|
@@ -50,6 +50,23 @@ const looksLikeResult = (value) => {
|
|
|
50
50
|
// session that expired at the epoch rather than as a bad response.
|
|
51
51
|
result.signerDelegation.length > 0);
|
|
52
52
|
};
|
|
53
|
+
const sessionDelegationRequest = (params) => ({
|
|
54
|
+
jsonrpc: '2.0',
|
|
55
|
+
id: globalThis.crypto.randomUUID(),
|
|
56
|
+
method: SESSION_DELEGATION_METHOD,
|
|
57
|
+
params: {
|
|
58
|
+
sessionPublicKey: toBase64(params.sessionPublicKey),
|
|
59
|
+
...(params.maxTimeToLive === undefined
|
|
60
|
+
? {}
|
|
61
|
+
: { maxTimeToLive: params.maxTimeToLive.toString() }),
|
|
62
|
+
...(params.maxTimeToIdle === undefined
|
|
63
|
+
? {}
|
|
64
|
+
: { maxTimeToIdle: params.maxTimeToIdle.toString() }),
|
|
65
|
+
...(params.derivationOrigin === undefined
|
|
66
|
+
? {}
|
|
67
|
+
: { icrc95DerivationOrigin: params.derivationOrigin }),
|
|
68
|
+
},
|
|
69
|
+
});
|
|
53
70
|
/**
|
|
54
71
|
* Asks the identity provider for a session, and returns the chain it signed.
|
|
55
72
|
*
|
|
@@ -58,23 +75,11 @@ const looksLikeResult = (value) => {
|
|
|
58
75
|
* delegations are minted from.
|
|
59
76
|
*/
|
|
60
77
|
export async function requestSessionDelegation(signer, params) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
sessionPublicKey: toBase64(params.sessionPublicKey),
|
|
67
|
-
...(params.maxTimeToLive === undefined
|
|
68
|
-
? {}
|
|
69
|
-
: { maxTimeToLive: params.maxTimeToLive.toString() }),
|
|
70
|
-
...(params.maxTimeToIdle === undefined
|
|
71
|
-
? {}
|
|
72
|
-
: { maxTimeToIdle: params.maxTimeToIdle.toString() }),
|
|
73
|
-
...(params.derivationOrigin === undefined
|
|
74
|
-
? {}
|
|
75
|
-
: { icrc95DerivationOrigin: params.derivationOrigin }),
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
+
// Sent on the call, before any await, so the request takes its place in call
|
|
79
|
+
// order with the signer even while its params are still on their way.
|
|
80
|
+
const response = await signer.sendRequest(params instanceof Promise
|
|
81
|
+
? params.then(sessionDelegationRequest)
|
|
82
|
+
: sessionDelegationRequest(params));
|
|
78
83
|
if ('error' in response) {
|
|
79
84
|
// The code carries the only thing a caller can act on, and dropping it left
|
|
80
85
|
// `interaction_required` indistinguishable from a transport failure except by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-delegation.js","sourceRoot":"","sources":["../../../src/client/session-delegation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD;;;;;;;;OAQG;IACM,MAAM,CAAqB;IAEpC,YAAY,OAAe,EAAE,MAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAUD,MAAM,eAAe,GAAG,CAAC,KAAc,EAAoC,EAAE;IAC3E,MAAM,MAAM,GAAG,KAA4C,CAAC;IAC5D,OAAO,CACL,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ;QACrC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC;QACvC,4EAA4E;QAC5E,mEAAmE;QACnE,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CACnC,CAAC;AACJ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"session-delegation.js","sourceRoot":"","sources":["../../../src/client/session-delegation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@icp-sdk/auth",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.2",
|
|
4
4
|
"author": "DFINITY Stiftung <sdk@dfinity.org>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"description": "Authentication library for Internet Computer web apps",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@icp-sdk/core": "^6"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@icp-sdk/signer": "^6.
|
|
57
|
+
"@icp-sdk/signer": "^6.1.0",
|
|
58
58
|
"idb": "^7.1.1"
|
|
59
59
|
},
|
|
60
60
|
"scripts": {
|
|
@@ -741,19 +741,14 @@ export class AuthClient {
|
|
|
741
741
|
}
|
|
742
742
|
|
|
743
743
|
/**
|
|
744
|
-
*
|
|
745
|
-
* interaction on it.
|
|
744
|
+
* Takes the lock that makes this the only interaction on the signer channel.
|
|
746
745
|
*
|
|
747
|
-
*
|
|
748
|
-
*
|
|
749
|
-
*
|
|
750
|
-
*
|
|
751
|
-
* is open. Two callers doing that by hand is one place too many for the order
|
|
752
|
-
* to come out backwards.
|
|
746
|
+
* Called right after a request is handed to the signer, which opens the
|
|
747
|
+
* channel within that call: a popup may only be opened from the task the
|
|
748
|
+
* click started, and lock requests in front of it were enough for Chromium to
|
|
749
|
+
* refuse the window, so the lock is asked for once the window exists.
|
|
753
750
|
*/
|
|
754
|
-
|
|
755
|
-
await this.#signer.openChannel();
|
|
756
|
-
|
|
751
|
+
#takeChannelLock(): void {
|
|
757
752
|
if (this.#channelLock === undefined) {
|
|
758
753
|
const lock = stealLock(CHANNEL_LOCK);
|
|
759
754
|
// Whoever took the channel has already renavigated the window this one was
|
|
@@ -832,14 +827,11 @@ export class AuthClient {
|
|
|
832
827
|
const returnTo =
|
|
833
828
|
raw === undefined ? undefined : this.memoize(() => sameOriginTarget(raw)?.href ?? null);
|
|
834
829
|
|
|
835
|
-
//
|
|
836
|
-
//
|
|
837
|
-
//
|
|
838
|
-
//
|
|
839
|
-
//
|
|
840
|
-
// Under `Promise.all([signIn, requestAttributes])` this is what keeps a
|
|
841
|
-
// faster concurrent request from flushing before this flow's delegation
|
|
842
|
-
// request is buffered.
|
|
830
|
+
// Session-key acquisition starts on the call, and the delegation request
|
|
831
|
+
// that needs it is handed to the signer on the call too, as a promise of the
|
|
832
|
+
// request. The signer places it in call order there, so in the redirect
|
|
833
|
+
// flow it replays into the slot it was sent from whatever the key costs on
|
|
834
|
+
// either load, and a `requestAttributes` issued alongside keeps its own.
|
|
843
835
|
const sessionKeyPromise: Promise<{
|
|
844
836
|
key: SignIdentity | PartialIdentity;
|
|
845
837
|
pending?: boolean;
|
|
@@ -853,9 +845,25 @@ export class AuthClient {
|
|
|
853
845
|
// rejection and propagates it when reached.
|
|
854
846
|
void sessionKeyPromise.catch(() => undefined);
|
|
855
847
|
|
|
856
|
-
//
|
|
857
|
-
//
|
|
858
|
-
|
|
848
|
+
// Opens the signer window within the call, which the browser allows only in
|
|
849
|
+
// the tick the click started, so nothing before it may ask the browser for
|
|
850
|
+
// anything.
|
|
851
|
+
const sessionChainPromise = requestSessionDelegation(
|
|
852
|
+
this.#signer,
|
|
853
|
+
sessionKeyPromise.then(({ key }) => ({
|
|
854
|
+
sessionPublicKey: key.getPublicKey().toDer(),
|
|
855
|
+
// Both bounds are sent only where the caller asked, so the provider's
|
|
856
|
+
// own defaults apply otherwise rather than numbers this library
|
|
857
|
+
// invented. How long a sign-in lasts is the provider's policy, narrowed
|
|
858
|
+
// by what the user chooses at consent and by an organization's cap.
|
|
859
|
+
maxTimeToLive: options?.maxTimeToLive,
|
|
860
|
+
maxTimeToIdle: options?.maxTimeToIdle,
|
|
861
|
+
derivationOrigin: this.#options.derivationOrigin?.toString(),
|
|
862
|
+
})),
|
|
863
|
+
);
|
|
864
|
+
void sessionChainPromise.catch(() => undefined);
|
|
865
|
+
|
|
866
|
+
this.#takeChannelLock();
|
|
859
867
|
|
|
860
868
|
// The other lock a ceremony needs, taken once the window is open for the
|
|
861
869
|
// same reason. Stolen rather than queued for, so the newer intent wins and
|
|
@@ -893,16 +901,7 @@ export class AuthClient {
|
|
|
893
901
|
throw new Error('A session needs a key that can sign');
|
|
894
902
|
}
|
|
895
903
|
|
|
896
|
-
const sessionChain = await
|
|
897
|
-
sessionPublicKey: key.getPublicKey().toDer(),
|
|
898
|
-
// Both bounds are sent only where the caller asked, so the provider's
|
|
899
|
-
// own defaults apply otherwise rather than numbers this library
|
|
900
|
-
// invented. How long a sign-in lasts is the provider's policy, narrowed
|
|
901
|
-
// by what the user chooses at consent and by an organization's cap.
|
|
902
|
-
maxTimeToLive: options?.maxTimeToLive,
|
|
903
|
-
maxTimeToIdle: options?.maxTimeToIdle,
|
|
904
|
-
derivationOrigin: this.#options.derivationOrigin?.toString(),
|
|
905
|
-
});
|
|
904
|
+
const sessionChain = await sessionChainPromise;
|
|
906
905
|
|
|
907
906
|
// The chain comes from the signer over a transport shared with others, so
|
|
908
907
|
// the key it delegates to is checked here rather than assumed. A chain for
|
|
@@ -1002,21 +1001,10 @@ export class AuthClient {
|
|
|
1002
1001
|
);
|
|
1003
1002
|
}
|
|
1004
1003
|
|
|
1005
|
-
//
|
|
1006
|
-
//
|
|
1007
|
-
//
|
|
1008
|
-
//
|
|
1009
|
-
// this hold, a faster concurrent request (e.g. the nonce path of
|
|
1010
|
-
// `requestAttributes`) buffers first and trips that flush before this flow's
|
|
1011
|
-
// delegation request — issued only once the key is ready — is buffered,
|
|
1012
|
-
// splitting what should be one redirect into two.
|
|
1013
|
-
//
|
|
1014
|
-
// The key is captured in a closure, not read back after the producer: on the
|
|
1015
|
-
// FIRST load the producer sets `acquired`, so the delegation request that
|
|
1016
|
-
// follows is issued with no intervening storage read — a read there would
|
|
1017
|
-
// re-open the very flush gap this closes. The producer is skipped on the
|
|
1018
|
-
// replay load (its result is journaled), where the key is instead read from
|
|
1019
|
-
// the pending slot.
|
|
1004
|
+
// Acquired inside a `memoize` producer, so the first load journals which key
|
|
1005
|
+
// this ceremony started with. The key is captured in a closure on the first
|
|
1006
|
+
// load, where the producer runs; on the replay load the producer is skipped
|
|
1007
|
+
// (its result is journaled) and the key is read from the pending slot.
|
|
1020
1008
|
//
|
|
1021
1009
|
// What is journaled is the key's *public* half: not a secret, it survives the
|
|
1022
1010
|
// redirect as text, and on the return load it says whether the pending slot
|
|
@@ -1057,9 +1045,10 @@ export class AuthClient {
|
|
|
1057
1045
|
*
|
|
1058
1046
|
* In 'window' mode the callback lets the identity provider window open while the
|
|
1059
1047
|
* nonce is still resolving, avoiding a perceived delay before the user sees
|
|
1060
|
-
* the prompt;
|
|
1061
|
-
*
|
|
1062
|
-
*
|
|
1048
|
+
* the prompt; the signer keeps the channel open while the request waits for
|
|
1049
|
+
* its nonce. In both modes the request takes its place with the signer when
|
|
1050
|
+
* this method is called, so it can be issued alongside `signIn` in either
|
|
1051
|
+
* order.
|
|
1063
1052
|
*
|
|
1064
1053
|
* @param params - Request parameters.
|
|
1065
1054
|
* @param params.keys - Attribute keys to request (e.g. `['email', 'name']`).
|
|
@@ -1089,16 +1078,24 @@ export class AuthClient {
|
|
|
1089
1078
|
}): Promise<SignedAttributes> {
|
|
1090
1079
|
// In redirect mode the nonce is journaled (base64, since the journal is
|
|
1091
1080
|
// JSON) so the replay on the return load signs against the same bytes.
|
|
1092
|
-
const
|
|
1093
|
-
?
|
|
1094
|
-
:
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1081
|
+
const nonce: Promise<string> = this.#urlTransport
|
|
1082
|
+
? this.#urlTransport.memoize(async () => toBase64(await params.nonce()))
|
|
1083
|
+
: params.nonce().then(toBase64);
|
|
1084
|
+
|
|
1085
|
+
// Handed to the signer on the call, as a promise of the request: the signer
|
|
1086
|
+
// window opens within the call while the nonce is still on its way, and the
|
|
1087
|
+
// request keeps its place in call order however long the nonce takes on
|
|
1088
|
+
// either load of a redirect flow.
|
|
1089
|
+
const responsePromise = this.#signer.sendRequest(
|
|
1090
|
+
nonce.then((value) => ({
|
|
1091
|
+
jsonrpc: '2.0' as const,
|
|
1092
|
+
id: globalThis.crypto.randomUUID(),
|
|
1093
|
+
method: 'ii-icrc3-attributes',
|
|
1094
|
+
params: { keys: params.keys, nonce: value },
|
|
1095
|
+
})),
|
|
1096
|
+
);
|
|
1097
|
+
this.#takeChannelLock();
|
|
1098
|
+
const response = await responsePromise;
|
|
1102
1099
|
|
|
1103
1100
|
if ('error' in response) {
|
|
1104
1101
|
throw new Error(response.error.message);
|
|
@@ -1235,24 +1232,6 @@ export class AuthClient {
|
|
|
1235
1232
|
}
|
|
1236
1233
|
}
|
|
1237
1234
|
|
|
1238
|
-
// Popup-mode nonce resolution. Start the fetch, then open the transport
|
|
1239
|
-
// channel so the identity provider window is visible while we wait, and
|
|
1240
|
-
// suspend auto-close so it can't fire mid-await (e.g. due to a close
|
|
1241
|
-
// scheduled by a prior request on the same signer). The original auto-close
|
|
1242
|
-
// setting is restored before sendRequest, so the next response resumes
|
|
1243
|
-
// normal close behaviour.
|
|
1244
|
-
async #resolveNonce(nonce: () => Promise<Uint8Array>): Promise<Uint8Array> {
|
|
1245
|
-
const value = nonce();
|
|
1246
|
-
await this.#openSignerChannel();
|
|
1247
|
-
const previousAutoClose = this.#signer.autoCloseTransportChannel;
|
|
1248
|
-
this.#signer.autoCloseTransportChannel = false;
|
|
1249
|
-
try {
|
|
1250
|
-
return await value;
|
|
1251
|
-
} finally {
|
|
1252
|
-
this.#signer.autoCloseTransportChannel = previousAutoClose;
|
|
1253
|
-
}
|
|
1254
|
-
}
|
|
1255
|
-
|
|
1256
1235
|
/**
|
|
1257
1236
|
* Mints ahead of the next request when the page comes back, if one is due.
|
|
1258
1237
|
*
|
|
@@ -68,6 +68,31 @@ const looksLikeResult = (value: unknown): value is SessionDelegationResult => {
|
|
|
68
68
|
);
|
|
69
69
|
};
|
|
70
70
|
|
|
71
|
+
interface SessionDelegationParams {
|
|
72
|
+
sessionPublicKey: DerEncodedPublicKey;
|
|
73
|
+
maxTimeToLive?: bigint;
|
|
74
|
+
maxTimeToIdle?: bigint;
|
|
75
|
+
derivationOrigin?: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const sessionDelegationRequest = (params: SessionDelegationParams) => ({
|
|
79
|
+
jsonrpc: '2.0' as const,
|
|
80
|
+
id: globalThis.crypto.randomUUID(),
|
|
81
|
+
method: SESSION_DELEGATION_METHOD,
|
|
82
|
+
params: {
|
|
83
|
+
sessionPublicKey: toBase64(params.sessionPublicKey),
|
|
84
|
+
...(params.maxTimeToLive === undefined
|
|
85
|
+
? {}
|
|
86
|
+
: { maxTimeToLive: params.maxTimeToLive.toString() }),
|
|
87
|
+
...(params.maxTimeToIdle === undefined
|
|
88
|
+
? {}
|
|
89
|
+
: { maxTimeToIdle: params.maxTimeToIdle.toString() }),
|
|
90
|
+
...(params.derivationOrigin === undefined
|
|
91
|
+
? {}
|
|
92
|
+
: { icrc95DerivationOrigin: params.derivationOrigin }),
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
|
|
71
96
|
/**
|
|
72
97
|
* Asks the identity provider for a session, and returns the chain it signed.
|
|
73
98
|
*
|
|
@@ -77,30 +102,15 @@ const looksLikeResult = (value: unknown): value is SessionDelegationResult => {
|
|
|
77
102
|
*/
|
|
78
103
|
export async function requestSessionDelegation(
|
|
79
104
|
signer: Signer,
|
|
80
|
-
params:
|
|
81
|
-
sessionPublicKey: DerEncodedPublicKey;
|
|
82
|
-
maxTimeToLive?: bigint;
|
|
83
|
-
maxTimeToIdle?: bigint;
|
|
84
|
-
derivationOrigin?: string;
|
|
85
|
-
},
|
|
105
|
+
params: SessionDelegationParams | Promise<SessionDelegationParams>,
|
|
86
106
|
): Promise<DelegationChain> {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
? {}
|
|
95
|
-
: { maxTimeToLive: params.maxTimeToLive.toString() }),
|
|
96
|
-
...(params.maxTimeToIdle === undefined
|
|
97
|
-
? {}
|
|
98
|
-
: { maxTimeToIdle: params.maxTimeToIdle.toString() }),
|
|
99
|
-
...(params.derivationOrigin === undefined
|
|
100
|
-
? {}
|
|
101
|
-
: { icrc95DerivationOrigin: params.derivationOrigin }),
|
|
102
|
-
},
|
|
103
|
-
});
|
|
107
|
+
// Sent on the call, before any await, so the request takes its place in call
|
|
108
|
+
// order with the signer even while its params are still on their way.
|
|
109
|
+
const response = await signer.sendRequest(
|
|
110
|
+
params instanceof Promise
|
|
111
|
+
? params.then(sessionDelegationRequest)
|
|
112
|
+
: sessionDelegationRequest(params),
|
|
113
|
+
);
|
|
104
114
|
|
|
105
115
|
if ('error' in response) {
|
|
106
116
|
// The code carries the only thing a caller can act on, and dropping it left
|