@icp-sdk/auth 10.0.0 → 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 +76 -86
- 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 +85 -90
- 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']`).
|
|
@@ -95,6 +95,9 @@ export class AuthClient {
|
|
|
95
95
|
#listeners = new Set();
|
|
96
96
|
// Set while a restore is running, so its own writes are not news.
|
|
97
97
|
#restoring = false;
|
|
98
|
+
// Set while a ceremony writes the record and installs the identity that goes
|
|
99
|
+
// with it, so `getIdentity()` in between waits for the identity.
|
|
100
|
+
#committing = null;
|
|
98
101
|
#stateStorage;
|
|
99
102
|
#signer;
|
|
100
103
|
// Set only in redirect mode, so the redirect-specific paths (nonce/key
|
|
@@ -153,12 +156,10 @@ export class AuthClient {
|
|
|
153
156
|
// stale.
|
|
154
157
|
this.#status = this.#readStatus();
|
|
155
158
|
this.#unwatchState = this.#stateStorage.subscribe(this.#slots.state, () => {
|
|
156
|
-
// The held answer first, then the
|
|
157
|
-
//
|
|
158
|
-
//
|
|
159
|
+
// The held answer first, then the restore, then the listeners — so a
|
|
160
|
+
// listener asking who is signed in sees what it was told about, and one
|
|
161
|
+
// asking for the identity waits for the restore that installs it.
|
|
159
162
|
this.#status = this.#readStatus();
|
|
160
|
-
for (const listener of [...this.#listeners])
|
|
161
|
-
listener();
|
|
162
163
|
// Only a change this client did not cause. A ceremony writes this record
|
|
163
164
|
// itself and installs the identity that goes with it, and a restore writes
|
|
164
165
|
// it too when what it found turns out not to be usable — reacting to
|
|
@@ -168,9 +169,11 @@ export class AuthClient {
|
|
|
168
169
|
//
|
|
169
170
|
// What this gives up is a peer's change arriving during our own restore,
|
|
170
171
|
// which the next change reports.
|
|
171
|
-
if (this.#interactions
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
if (this.#interactions === 0 && !this.#restoring && !this.#disposed) {
|
|
173
|
+
this.#restoreAgain();
|
|
174
|
+
}
|
|
175
|
+
for (const listener of [...this.#listeners])
|
|
176
|
+
listener();
|
|
174
177
|
});
|
|
175
178
|
if (options.openIdProvider !== undefined && options.ssoDomain !== undefined) {
|
|
176
179
|
throw new Error('openIdProvider and ssoDomain are mutually exclusive');
|
|
@@ -237,6 +240,9 @@ export class AuthClient {
|
|
|
237
240
|
*/
|
|
238
241
|
async getIdentity() {
|
|
239
242
|
await this.#init();
|
|
243
|
+
// A ceremony that fails partway leaves the record without an identity, which
|
|
244
|
+
// the check below reports; its own error is `signIn()`'s to throw.
|
|
245
|
+
await this.#committing?.catch(() => undefined);
|
|
240
246
|
// A record exists and this client holds nothing to act with. Handing back an
|
|
241
247
|
// anonymous identity here is the dangerous answer: calls would go out
|
|
242
248
|
// unauthenticated while `isAuthenticated()` and the record both say someone
|
|
@@ -432,18 +438,14 @@ export class AuthClient {
|
|
|
432
438
|
this.#interactions += 1;
|
|
433
439
|
}
|
|
434
440
|
/**
|
|
435
|
-
*
|
|
436
|
-
* interaction on it.
|
|
441
|
+
* Takes the lock that makes this the only interaction on the signer channel.
|
|
437
442
|
*
|
|
438
|
-
*
|
|
439
|
-
*
|
|
440
|
-
*
|
|
441
|
-
*
|
|
442
|
-
* is open. Two callers doing that by hand is one place too many for the order
|
|
443
|
-
* 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.
|
|
444
447
|
*/
|
|
445
|
-
|
|
446
|
-
await this.#signer.openChannel();
|
|
448
|
+
#takeChannelLock() {
|
|
447
449
|
if (this.#channelLock === undefined) {
|
|
448
450
|
const lock = stealLock(CHANNEL_LOCK);
|
|
449
451
|
// Whoever took the channel has already renavigated the window this one was
|
|
@@ -513,14 +515,11 @@ export class AuthClient {
|
|
|
513
515
|
// carry across the round trip for the return leg to trust.
|
|
514
516
|
const raw = options?.returnTo;
|
|
515
517
|
const returnTo = raw === undefined ? undefined : this.memoize(() => sameOriginTarget(raw)?.href ?? null);
|
|
516
|
-
//
|
|
517
|
-
//
|
|
518
|
-
//
|
|
519
|
-
//
|
|
520
|
-
//
|
|
521
|
-
// Under `Promise.all([signIn, requestAttributes])` this is what keeps a
|
|
522
|
-
// faster concurrent request from flushing before this flow's delegation
|
|
523
|
-
// 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.
|
|
524
523
|
const sessionKeyPromise = this.#urlTransport
|
|
525
524
|
? this.#ensureSessionKeyForRedirectFlow(this.#urlTransport)
|
|
526
525
|
: this.#ensureSessionKeyForWindowFlow().then((key) => ({ key }));
|
|
@@ -530,9 +529,21 @@ export class AuthClient {
|
|
|
530
529
|
// surfacing as an unhandled rejection. The `await` below still observes a
|
|
531
530
|
// rejection and propagates it when reached.
|
|
532
531
|
void sessionKeyPromise.catch(() => undefined);
|
|
533
|
-
//
|
|
534
|
-
//
|
|
535
|
-
|
|
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();
|
|
536
547
|
// The other lock a ceremony needs, taken once the window is open for the
|
|
537
548
|
// same reason. Stolen rather than queued for, so the newer intent wins and
|
|
538
549
|
// the loser learns of it before writing anything.
|
|
@@ -564,16 +575,7 @@ export class AuthClient {
|
|
|
564
575
|
// an identity whose first request fails for a reason nothing explains.
|
|
565
576
|
throw new Error('A session needs a key that can sign');
|
|
566
577
|
}
|
|
567
|
-
const sessionChain = await
|
|
568
|
-
sessionPublicKey: key.getPublicKey().toDer(),
|
|
569
|
-
// Both bounds are sent only where the caller asked, so the provider's
|
|
570
|
-
// own defaults apply otherwise rather than numbers this library
|
|
571
|
-
// invented. How long a sign-in lasts is the provider's policy, narrowed
|
|
572
|
-
// by what the user chooses at consent and by an organization's cap.
|
|
573
|
-
maxTimeToLive: options?.maxTimeToLive,
|
|
574
|
-
maxTimeToIdle: options?.maxTimeToIdle,
|
|
575
|
-
derivationOrigin: this.#options.derivationOrigin?.toString(),
|
|
576
|
-
});
|
|
578
|
+
const sessionChain = await sessionChainPromise;
|
|
577
579
|
// The chain comes from the signer over a transport shared with others, so
|
|
578
580
|
// the key it delegates to is checked here rather than assumed. A chain for
|
|
579
581
|
// another key mints nothing, and failing now names the cause instead of
|
|
@@ -599,11 +601,21 @@ export class AuthClient {
|
|
|
599
601
|
// The session and the state first, because the state is what makes this
|
|
600
602
|
// account the one this origin answers for; promoting ahead of it would
|
|
601
603
|
// publish a credential for a sign-in nothing has recorded yet.
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
604
|
+
const committing = (async () => {
|
|
605
|
+
await guarded(() => this.#persistSession(key, sessionChain, appChain.publicKey));
|
|
606
|
+
await guarded(() => this.#promoteAppCredential(appKey, appChain));
|
|
607
|
+
await guarded(async () => {
|
|
608
|
+
this.#installIdentity(await this.#openSession(key, sessionChain, minter));
|
|
609
|
+
});
|
|
610
|
+
})();
|
|
611
|
+
this.#committing = committing;
|
|
612
|
+
try {
|
|
613
|
+
await committing;
|
|
614
|
+
}
|
|
615
|
+
finally {
|
|
616
|
+
if (this.#committing === committing)
|
|
617
|
+
this.#committing = null;
|
|
618
|
+
}
|
|
607
619
|
// Best-effort — the user is already signed in, so a cleanup failure must not
|
|
608
620
|
// fail signIn(), and the next ceremony overwrites what is left behind.
|
|
609
621
|
if (pending) {
|
|
@@ -651,21 +663,10 @@ export class AuthClient {
|
|
|
651
663
|
if (!this.#credentialStorage.durable) {
|
|
652
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.');
|
|
653
665
|
}
|
|
654
|
-
//
|
|
655
|
-
//
|
|
656
|
-
//
|
|
657
|
-
//
|
|
658
|
-
// this hold, a faster concurrent request (e.g. the nonce path of
|
|
659
|
-
// `requestAttributes`) buffers first and trips that flush before this flow's
|
|
660
|
-
// delegation request — issued only once the key is ready — is buffered,
|
|
661
|
-
// splitting what should be one redirect into two.
|
|
662
|
-
//
|
|
663
|
-
// The key is captured in a closure, not read back after the producer: on the
|
|
664
|
-
// FIRST load the producer sets `acquired`, so the delegation request that
|
|
665
|
-
// follows is issued with no intervening storage read — a read there would
|
|
666
|
-
// re-open the very flush gap this closes. The producer is skipped on the
|
|
667
|
-
// replay load (its result is journaled), where the key is instead read from
|
|
668
|
-
// 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.
|
|
669
670
|
//
|
|
670
671
|
// What is journaled is the key's *public* half: not a secret, it survives the
|
|
671
672
|
// redirect as text, and on the return load it says whether the pending slot
|
|
@@ -704,9 +705,10 @@ export class AuthClient {
|
|
|
704
705
|
*
|
|
705
706
|
* In 'window' mode the callback lets the identity provider window open while the
|
|
706
707
|
* nonce is still resolving, avoiding a perceived delay before the user sees
|
|
707
|
-
* the prompt;
|
|
708
|
-
*
|
|
709
|
-
*
|
|
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.
|
|
710
712
|
*
|
|
711
713
|
* @param params - Request parameters.
|
|
712
714
|
* @param params.keys - Attribute keys to request (e.g. `['email', 'name']`).
|
|
@@ -730,15 +732,21 @@ export class AuthClient {
|
|
|
730
732
|
async #runRequestAttributes(params) {
|
|
731
733
|
// In redirect mode the nonce is journaled (base64, since the journal is
|
|
732
734
|
// JSON) so the replay on the return load signs against the same bytes.
|
|
733
|
-
const
|
|
734
|
-
?
|
|
735
|
-
:
|
|
736
|
-
|
|
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) => ({
|
|
737
743
|
jsonrpc: '2.0',
|
|
738
744
|
id: globalThis.crypto.randomUUID(),
|
|
739
745
|
method: 'ii-icrc3-attributes',
|
|
740
|
-
params: { keys: params.keys, nonce:
|
|
741
|
-
});
|
|
746
|
+
params: { keys: params.keys, nonce: value },
|
|
747
|
+
})));
|
|
748
|
+
this.#takeChannelLock();
|
|
749
|
+
const response = await responsePromise;
|
|
742
750
|
if ('error' in response) {
|
|
743
751
|
throw new Error(response.error.message);
|
|
744
752
|
}
|
|
@@ -819,24 +827,6 @@ export class AuthClient {
|
|
|
819
827
|
}
|
|
820
828
|
}
|
|
821
829
|
}
|
|
822
|
-
// Popup-mode nonce resolution. Start the fetch, then open the transport
|
|
823
|
-
// channel so the identity provider window is visible while we wait, and
|
|
824
|
-
// suspend auto-close so it can't fire mid-await (e.g. due to a close
|
|
825
|
-
// scheduled by a prior request on the same signer). The original auto-close
|
|
826
|
-
// setting is restored before sendRequest, so the next response resumes
|
|
827
|
-
// normal close behaviour.
|
|
828
|
-
async #resolveNonce(nonce) {
|
|
829
|
-
const value = nonce();
|
|
830
|
-
await this.#openSignerChannel();
|
|
831
|
-
const previousAutoClose = this.#signer.autoCloseTransportChannel;
|
|
832
|
-
this.#signer.autoCloseTransportChannel = false;
|
|
833
|
-
try {
|
|
834
|
-
return await value;
|
|
835
|
-
}
|
|
836
|
-
finally {
|
|
837
|
-
this.#signer.autoCloseTransportChannel = previousAutoClose;
|
|
838
|
-
}
|
|
839
|
-
}
|
|
840
830
|
/**
|
|
841
831
|
* Mints ahead of the next request when the page comes back, if one is due.
|
|
842
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": {
|
|
@@ -368,6 +368,9 @@ export class AuthClient {
|
|
|
368
368
|
readonly #listeners = new Set<() => void>();
|
|
369
369
|
// Set while a restore is running, so its own writes are not news.
|
|
370
370
|
#restoring = false;
|
|
371
|
+
// Set while a ceremony writes the record and installs the identity that goes
|
|
372
|
+
// with it, so `getIdentity()` in between waits for the identity.
|
|
373
|
+
#committing: Promise<void> | null = null;
|
|
371
374
|
#stateStorage: StateStorage;
|
|
372
375
|
#signer: Signer;
|
|
373
376
|
// Set only in redirect mode, so the redirect-specific paths (nonce/key
|
|
@@ -437,11 +440,10 @@ export class AuthClient {
|
|
|
437
440
|
// stale.
|
|
438
441
|
this.#status = this.#readStatus();
|
|
439
442
|
this.#unwatchState = this.#stateStorage.subscribe(this.#slots.state, () => {
|
|
440
|
-
// The held answer first, then the
|
|
441
|
-
//
|
|
442
|
-
//
|
|
443
|
+
// The held answer first, then the restore, then the listeners — so a
|
|
444
|
+
// listener asking who is signed in sees what it was told about, and one
|
|
445
|
+
// asking for the identity waits for the restore that installs it.
|
|
443
446
|
this.#status = this.#readStatus();
|
|
444
|
-
for (const listener of [...this.#listeners]) listener();
|
|
445
447
|
|
|
446
448
|
// Only a change this client did not cause. A ceremony writes this record
|
|
447
449
|
// itself and installs the identity that goes with it, and a restore writes
|
|
@@ -452,8 +454,11 @@ export class AuthClient {
|
|
|
452
454
|
//
|
|
453
455
|
// What this gives up is a peer's change arriving during our own restore,
|
|
454
456
|
// which the next change reports.
|
|
455
|
-
if (this.#interactions
|
|
456
|
-
|
|
457
|
+
if (this.#interactions === 0 && !this.#restoring && !this.#disposed) {
|
|
458
|
+
this.#restoreAgain();
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
for (const listener of [...this.#listeners]) listener();
|
|
457
462
|
});
|
|
458
463
|
if (options.openIdProvider !== undefined && options.ssoDomain !== undefined) {
|
|
459
464
|
throw new Error('openIdProvider and ssoDomain are mutually exclusive');
|
|
@@ -528,6 +533,9 @@ export class AuthClient {
|
|
|
528
533
|
*/
|
|
529
534
|
async getIdentity(): Promise<Identity> {
|
|
530
535
|
await this.#init();
|
|
536
|
+
// A ceremony that fails partway leaves the record without an identity, which
|
|
537
|
+
// the check below reports; its own error is `signIn()`'s to throw.
|
|
538
|
+
await this.#committing?.catch(() => undefined);
|
|
531
539
|
|
|
532
540
|
// A record exists and this client holds nothing to act with. Handing back an
|
|
533
541
|
// anonymous identity here is the dangerous answer: calls would go out
|
|
@@ -733,19 +741,14 @@ export class AuthClient {
|
|
|
733
741
|
}
|
|
734
742
|
|
|
735
743
|
/**
|
|
736
|
-
*
|
|
737
|
-
* interaction on it.
|
|
744
|
+
* Takes the lock that makes this the only interaction on the signer channel.
|
|
738
745
|
*
|
|
739
|
-
*
|
|
740
|
-
*
|
|
741
|
-
*
|
|
742
|
-
*
|
|
743
|
-
* is open. Two callers doing that by hand is one place too many for the order
|
|
744
|
-
* 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.
|
|
745
750
|
*/
|
|
746
|
-
|
|
747
|
-
await this.#signer.openChannel();
|
|
748
|
-
|
|
751
|
+
#takeChannelLock(): void {
|
|
749
752
|
if (this.#channelLock === undefined) {
|
|
750
753
|
const lock = stealLock(CHANNEL_LOCK);
|
|
751
754
|
// Whoever took the channel has already renavigated the window this one was
|
|
@@ -824,14 +827,11 @@ export class AuthClient {
|
|
|
824
827
|
const returnTo =
|
|
825
828
|
raw === undefined ? undefined : this.memoize(() => sameOriginTarget(raw)?.href ?? null);
|
|
826
829
|
|
|
827
|
-
//
|
|
828
|
-
//
|
|
829
|
-
//
|
|
830
|
-
//
|
|
831
|
-
//
|
|
832
|
-
// Under `Promise.all([signIn, requestAttributes])` this is what keeps a
|
|
833
|
-
// faster concurrent request from flushing before this flow's delegation
|
|
834
|
-
// 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.
|
|
835
835
|
const sessionKeyPromise: Promise<{
|
|
836
836
|
key: SignIdentity | PartialIdentity;
|
|
837
837
|
pending?: boolean;
|
|
@@ -845,9 +845,25 @@ export class AuthClient {
|
|
|
845
845
|
// rejection and propagates it when reached.
|
|
846
846
|
void sessionKeyPromise.catch(() => undefined);
|
|
847
847
|
|
|
848
|
-
//
|
|
849
|
-
//
|
|
850
|
-
|
|
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();
|
|
851
867
|
|
|
852
868
|
// The other lock a ceremony needs, taken once the window is open for the
|
|
853
869
|
// same reason. Stolen rather than queued for, so the newer intent wins and
|
|
@@ -885,16 +901,7 @@ export class AuthClient {
|
|
|
885
901
|
throw new Error('A session needs a key that can sign');
|
|
886
902
|
}
|
|
887
903
|
|
|
888
|
-
const sessionChain = await
|
|
889
|
-
sessionPublicKey: key.getPublicKey().toDer(),
|
|
890
|
-
// Both bounds are sent only where the caller asked, so the provider's
|
|
891
|
-
// own defaults apply otherwise rather than numbers this library
|
|
892
|
-
// invented. How long a sign-in lasts is the provider's policy, narrowed
|
|
893
|
-
// by what the user chooses at consent and by an organization's cap.
|
|
894
|
-
maxTimeToLive: options?.maxTimeToLive,
|
|
895
|
-
maxTimeToIdle: options?.maxTimeToIdle,
|
|
896
|
-
derivationOrigin: this.#options.derivationOrigin?.toString(),
|
|
897
|
-
});
|
|
904
|
+
const sessionChain = await sessionChainPromise;
|
|
898
905
|
|
|
899
906
|
// The chain comes from the signer over a transport shared with others, so
|
|
900
907
|
// the key it delegates to is checked here rather than assumed. A chain for
|
|
@@ -926,12 +933,20 @@ export class AuthClient {
|
|
|
926
933
|
// The session and the state first, because the state is what makes this
|
|
927
934
|
// account the one this origin answers for; promoting ahead of it would
|
|
928
935
|
// publish a credential for a sign-in nothing has recorded yet.
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
936
|
+
const committing = (async () => {
|
|
937
|
+
await guarded(() => this.#persistSession(key, sessionChain, appChain.publicKey));
|
|
938
|
+
await guarded(() => this.#promoteAppCredential(appKey, appChain));
|
|
939
|
+
|
|
940
|
+
await guarded(async () => {
|
|
941
|
+
this.#installIdentity(await this.#openSession(key, sessionChain, minter));
|
|
942
|
+
});
|
|
943
|
+
})();
|
|
944
|
+
this.#committing = committing;
|
|
945
|
+
try {
|
|
946
|
+
await committing;
|
|
947
|
+
} finally {
|
|
948
|
+
if (this.#committing === committing) this.#committing = null;
|
|
949
|
+
}
|
|
935
950
|
|
|
936
951
|
// Best-effort — the user is already signed in, so a cleanup failure must not
|
|
937
952
|
// fail signIn(), and the next ceremony overwrites what is left behind.
|
|
@@ -986,21 +1001,10 @@ export class AuthClient {
|
|
|
986
1001
|
);
|
|
987
1002
|
}
|
|
988
1003
|
|
|
989
|
-
//
|
|
990
|
-
//
|
|
991
|
-
//
|
|
992
|
-
//
|
|
993
|
-
// this hold, a faster concurrent request (e.g. the nonce path of
|
|
994
|
-
// `requestAttributes`) buffers first and trips that flush before this flow's
|
|
995
|
-
// delegation request — issued only once the key is ready — is buffered,
|
|
996
|
-
// splitting what should be one redirect into two.
|
|
997
|
-
//
|
|
998
|
-
// The key is captured in a closure, not read back after the producer: on the
|
|
999
|
-
// FIRST load the producer sets `acquired`, so the delegation request that
|
|
1000
|
-
// follows is issued with no intervening storage read — a read there would
|
|
1001
|
-
// re-open the very flush gap this closes. The producer is skipped on the
|
|
1002
|
-
// replay load (its result is journaled), where the key is instead read from
|
|
1003
|
-
// 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.
|
|
1004
1008
|
//
|
|
1005
1009
|
// What is journaled is the key's *public* half: not a secret, it survives the
|
|
1006
1010
|
// redirect as text, and on the return load it says whether the pending slot
|
|
@@ -1041,9 +1045,10 @@ export class AuthClient {
|
|
|
1041
1045
|
*
|
|
1042
1046
|
* In 'window' mode the callback lets the identity provider window open while the
|
|
1043
1047
|
* nonce is still resolving, avoiding a perceived delay before the user sees
|
|
1044
|
-
* the prompt;
|
|
1045
|
-
*
|
|
1046
|
-
*
|
|
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.
|
|
1047
1052
|
*
|
|
1048
1053
|
* @param params - Request parameters.
|
|
1049
1054
|
* @param params.keys - Attribute keys to request (e.g. `['email', 'name']`).
|
|
@@ -1073,16 +1078,24 @@ export class AuthClient {
|
|
|
1073
1078
|
}): Promise<SignedAttributes> {
|
|
1074
1079
|
// In redirect mode the nonce is journaled (base64, since the journal is
|
|
1075
1080
|
// JSON) so the replay on the return load signs against the same bytes.
|
|
1076
|
-
const
|
|
1077
|
-
?
|
|
1078
|
-
:
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
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;
|
|
1086
1099
|
|
|
1087
1100
|
if ('error' in response) {
|
|
1088
1101
|
throw new Error(response.error.message);
|
|
@@ -1219,24 +1232,6 @@ export class AuthClient {
|
|
|
1219
1232
|
}
|
|
1220
1233
|
}
|
|
1221
1234
|
|
|
1222
|
-
// Popup-mode nonce resolution. Start the fetch, then open the transport
|
|
1223
|
-
// channel so the identity provider window is visible while we wait, and
|
|
1224
|
-
// suspend auto-close so it can't fire mid-await (e.g. due to a close
|
|
1225
|
-
// scheduled by a prior request on the same signer). The original auto-close
|
|
1226
|
-
// setting is restored before sendRequest, so the next response resumes
|
|
1227
|
-
// normal close behaviour.
|
|
1228
|
-
async #resolveNonce(nonce: () => Promise<Uint8Array>): Promise<Uint8Array> {
|
|
1229
|
-
const value = nonce();
|
|
1230
|
-
await this.#openSignerChannel();
|
|
1231
|
-
const previousAutoClose = this.#signer.autoCloseTransportChannel;
|
|
1232
|
-
this.#signer.autoCloseTransportChannel = false;
|
|
1233
|
-
try {
|
|
1234
|
-
return await value;
|
|
1235
|
-
} finally {
|
|
1236
|
-
this.#signer.autoCloseTransportChannel = previousAutoClose;
|
|
1237
|
-
}
|
|
1238
|
-
}
|
|
1239
|
-
|
|
1240
1235
|
/**
|
|
1241
1236
|
* Mints ahead of the next request when the page comes back, if one is due.
|
|
1242
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
|