@arcblock/did-connect-service 4.1.21 → 4.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/_generated/asset-bytes.js +1 -1
  2. package/dist/_generated/asset-manifest.js +3 -3
  3. package/dist/assets/admin-core.1fc3260c.js +1623 -0
  4. package/dist/assets/admin-core.5a2d69b0.js +2067 -0
  5. package/dist/assets/admin-core.9fff6042.js +2083 -0
  6. package/dist/assets/admin-core.a13c2729.js +1461 -0
  7. package/dist/assets/{admin-core.40671087.js → admin-core.a63bbc69.js} +2 -12
  8. package/dist/assets/admin-core.c0b5af61.js +1393 -0
  9. package/dist/assets/admin-core.cbbdbe6d.js +1465 -0
  10. package/dist/assets/admin-core.e83fd379.js +1397 -0
  11. package/dist/assets/admin-extra.143b5774.js +2543 -0
  12. package/dist/assets/admin-extra.35b91f98.js +2543 -0
  13. package/dist/assets/admin-extra.531b187f.js +2552 -0
  14. package/dist/assets/admin-extra.7ca9c16b.js +2529 -0
  15. package/dist/assets/admin-extra.841b2bbe.js +2530 -0
  16. package/dist/assets/admin-extra.afcb3651.js +2528 -0
  17. package/dist/assets/admin.7c5d5f04.css +2312 -0
  18. package/dist/assets/admin.c26bb17a.css +2219 -0
  19. package/dist/assets/login.4404e695.js +720 -0
  20. package/dist/assets/login.bb9f8b03.js +720 -0
  21. package/dist/assets/login.d3f05790.js +720 -0
  22. package/dist/assets/login.fa25f37a.js +720 -0
  23. package/dist/blocklet-service-rpc.d.ts.map +1 -1
  24. package/dist/blocklet-service-rpc.js +11 -8
  25. package/dist/blocklet-service-rpc.js.map +1 -1
  26. package/dist/blocklet-service.d.ts +11 -8
  27. package/dist/blocklet-service.d.ts.map +1 -1
  28. package/dist/blocklet-service.js +32 -38
  29. package/dist/blocklet-service.js.map +1 -1
  30. package/dist/embedded.d.ts +6 -0
  31. package/dist/embedded.d.ts.map +1 -1
  32. package/dist/embedded.js +1 -0
  33. package/dist/embedded.js.map +1 -1
  34. package/dist/handlers/account-merge-handler.d.ts +63 -0
  35. package/dist/handlers/account-merge-handler.d.ts.map +1 -0
  36. package/dist/handlers/account-merge-handler.js +263 -0
  37. package/dist/handlers/account-merge-handler.js.map +1 -0
  38. package/dist/handlers/auth-handler.d.ts +9 -5
  39. package/dist/handlers/auth-handler.d.ts.map +1 -1
  40. package/dist/handlers/auth-handler.js +28 -7
  41. package/dist/handlers/auth-handler.js.map +1 -1
  42. package/dist/handlers/blocklet-js-handler.d.ts +3 -2
  43. package/dist/handlers/blocklet-js-handler.d.ts.map +1 -1
  44. package/dist/handlers/blocklet-js-handler.js +4 -2
  45. package/dist/handlers/blocklet-js-handler.js.map +1 -1
  46. package/dist/handlers/branding-handler.d.ts +4 -0
  47. package/dist/handlers/branding-handler.d.ts.map +1 -1
  48. package/dist/handlers/branding-handler.js +12 -6
  49. package/dist/handlers/branding-handler.js.map +1 -1
  50. package/dist/handlers/cimd.d.ts +6 -1
  51. package/dist/handlers/cimd.d.ts.map +1 -1
  52. package/dist/handlers/cimd.js +12 -2
  53. package/dist/handlers/cimd.js.map +1 -1
  54. package/dist/handlers/did-connect-handler.d.ts +22 -0
  55. package/dist/handlers/did-connect-handler.d.ts.map +1 -1
  56. package/dist/handlers/did-connect-handler.js +191 -17
  57. package/dist/handlers/did-connect-handler.js.map +1 -1
  58. package/dist/handlers/email-login-handler.d.ts +2 -0
  59. package/dist/handlers/email-login-handler.d.ts.map +1 -1
  60. package/dist/handlers/email-login-handler.js +30 -14
  61. package/dist/handlers/email-login-handler.js.map +1 -1
  62. package/dist/handlers/oauth-handler.d.ts +15 -0
  63. package/dist/handlers/oauth-handler.d.ts.map +1 -1
  64. package/dist/handlers/oauth-handler.js +107 -43
  65. package/dist/handlers/oauth-handler.js.map +1 -1
  66. package/dist/handlers/passkey-handler.d.ts.map +1 -1
  67. package/dist/handlers/passkey-handler.js +40 -8
  68. package/dist/handlers/passkey-handler.js.map +1 -1
  69. package/dist/handlers/team-handler.d.ts +1 -1
  70. package/dist/handlers/team-handler.d.ts.map +1 -1
  71. package/dist/handlers/team-handler.js +43 -3
  72. package/dist/handlers/team-handler.js.map +1 -1
  73. package/dist/handlers/ticket-handler.d.ts.map +1 -1
  74. package/dist/handlers/ticket-handler.js +4 -2
  75. package/dist/handlers/ticket-handler.js.map +1 -1
  76. package/dist/handlers/unbind-account.d.ts +22 -0
  77. package/dist/handlers/unbind-account.d.ts.map +1 -0
  78. package/dist/handlers/unbind-account.js +20 -0
  79. package/dist/handlers/unbind-account.js.map +1 -0
  80. package/dist/http/security-headers.d.ts +38 -0
  81. package/dist/http/security-headers.d.ts.map +1 -0
  82. package/dist/http/security-headers.js +67 -0
  83. package/dist/http/security-headers.js.map +1 -0
  84. package/dist/identity/account-state.d.ts +37 -0
  85. package/dist/identity/account-state.d.ts.map +1 -0
  86. package/dist/identity/account-state.js +97 -0
  87. package/dist/identity/account-state.js.map +1 -0
  88. package/dist/identity/json-content-type.d.ts +14 -0
  89. package/dist/identity/json-content-type.d.ts.map +1 -0
  90. package/dist/identity/json-content-type.js +26 -0
  91. package/dist/identity/json-content-type.js.map +1 -0
  92. package/dist/index.d.ts +3 -1
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +2 -2
  95. package/dist/index.js.map +1 -1
  96. package/dist/oauth-adapters/apple.d.ts +1 -1
  97. package/dist/oauth-adapters/apple.d.ts.map +1 -1
  98. package/dist/oauth-adapters/apple.js +2 -0
  99. package/dist/oauth-adapters/apple.js.map +1 -1
  100. package/dist/oauth-adapters/auth0-legacy.d.ts +1 -1
  101. package/dist/oauth-adapters/auth0-legacy.d.ts.map +1 -1
  102. package/dist/oauth-adapters/auth0-legacy.js +2 -0
  103. package/dist/oauth-adapters/auth0-legacy.js.map +1 -1
  104. package/dist/oauth-adapters/auth0.d.ts +1 -1
  105. package/dist/oauth-adapters/auth0.d.ts.map +1 -1
  106. package/dist/oauth-adapters/auth0.js +2 -0
  107. package/dist/oauth-adapters/auth0.js.map +1 -1
  108. package/dist/oauth-adapters/github.d.ts.map +1 -1
  109. package/dist/oauth-adapters/github.js +19 -12
  110. package/dist/oauth-adapters/github.js.map +1 -1
  111. package/dist/oauth-adapters/google.d.ts +1 -1
  112. package/dist/oauth-adapters/google.d.ts.map +1 -1
  113. package/dist/oauth-adapters/google.js +2 -0
  114. package/dist/oauth-adapters/google.js.map +1 -1
  115. package/dist/oauth-adapters/types.d.ts +7 -0
  116. package/dist/oauth-adapters/types.d.ts.map +1 -1
  117. package/dist/oauth-adapters/types.js +4 -1
  118. package/dist/oauth-adapters/types.js.map +1 -1
  119. package/dist/package-branding.d.ts +18 -0
  120. package/dist/package-branding.d.ts.map +1 -0
  121. package/dist/package-branding.js +103 -0
  122. package/dist/package-branding.js.map +1 -0
  123. package/dist/pages/admin/i18n.d.ts.map +1 -1
  124. package/dist/pages/admin/i18n.js +86 -0
  125. package/dist/pages/admin/i18n.js.map +1 -1
  126. package/dist/pages/admin/index.d.ts +4 -0
  127. package/dist/pages/admin/index.d.ts.map +1 -1
  128. package/dist/pages/admin/index.js +10 -2
  129. package/dist/pages/admin/index.js.map +1 -1
  130. package/dist/pages/admin/merge-confirm-view.d.ts +48 -0
  131. package/dist/pages/admin/merge-confirm-view.d.ts.map +1 -0
  132. package/dist/pages/admin/merge-confirm-view.js +85 -0
  133. package/dist/pages/admin/merge-confirm-view.js.map +1 -0
  134. package/dist/pages/admin/merge-method-picker.d.ts +12 -0
  135. package/dist/pages/admin/merge-method-picker.d.ts.map +1 -0
  136. package/dist/pages/admin/merge-method-picker.js +34 -0
  137. package/dist/pages/admin/merge-method-picker.js.map +1 -0
  138. package/dist/pages/admin/oauth-popup-close.d.ts +13 -0
  139. package/dist/pages/admin/oauth-popup-close.d.ts.map +1 -0
  140. package/dist/pages/admin/oauth-popup-close.js +15 -0
  141. package/dist/pages/admin/oauth-popup-close.js.map +1 -0
  142. package/dist/pages/admin/styles.d.ts +1 -1
  143. package/dist/pages/admin/styles.d.ts.map +1 -1
  144. package/dist/pages/admin/styles.js +83 -0
  145. package/dist/pages/admin/styles.js.map +1 -1
  146. package/dist/pages/admin/tab-audit.d.ts +1 -1
  147. package/dist/pages/admin/tab-audit.d.ts.map +1 -1
  148. package/dist/pages/admin/tab-audit.js +12 -0
  149. package/dist/pages/admin/tab-audit.js.map +1 -1
  150. package/dist/pages/admin/tab-profile-accounts.d.ts.map +1 -1
  151. package/dist/pages/admin/tab-profile-accounts.js +509 -3
  152. package/dist/pages/admin/tab-profile-accounts.js.map +1 -1
  153. package/dist/pages/invite-page.d.ts +1 -0
  154. package/dist/pages/invite-page.d.ts.map +1 -1
  155. package/dist/pages/invite-page.js +13 -3
  156. package/dist/pages/invite-page.js.map +1 -1
  157. package/dist/store/account-merge.d.ts +167 -0
  158. package/dist/store/account-merge.d.ts.map +1 -0
  159. package/dist/store/account-merge.js +313 -0
  160. package/dist/store/account-merge.js.map +1 -0
  161. package/dist/store/d1-store.d.ts +97 -7
  162. package/dist/store/d1-store.d.ts.map +1 -1
  163. package/dist/store/d1-store.js +421 -23
  164. package/dist/store/d1-store.js.map +1 -1
  165. package/dist/types.d.ts +8 -0
  166. package/dist/types.d.ts.map +1 -1
  167. package/migrations/0015_connected_accounts_id_index.sql +6 -0
  168. package/migrations/0016_did_aliases.sql +11 -0
  169. package/migrations/0017_unbind_revoke_and_cascade.sql +49 -0
  170. package/migrations/0018_primary_credential_did.sql +54 -0
  171. package/migrations/0019_account_merge.sql +16 -0
  172. package/migrations/0020_dedupe_connected_accounts.sql +24 -0
  173. package/package.json +3 -3
@@ -18,6 +18,7 @@ import { NATIVE_OAUTH_CALLBACK_PATH } from "../constants.js";
18
18
  import { ensureInstanceMembership } from "../identity/auto-membership.js";
19
19
  import { deriveDID } from "../identity/federation.js";
20
20
  import { fetchGravatarUrl } from "../identity/gravatar.js";
21
+ import { requireJsonContentType } from "../identity/json-content-type.js";
21
22
  import { verifyJWT } from "../identity/jwt.js";
22
23
  import { issueSessionTokens } from "../identity/session-tokens.js";
23
24
  import { consoleLogger } from "../logger.js";
@@ -29,7 +30,26 @@ import { GitHubAdapter } from "../oauth-adapters/github.js";
29
30
  import { GoogleAdapter } from "../oauth-adapters/google.js";
30
31
  import { TwitterAdapter } from "../oauth-adapters/twitter.js";
31
32
  import { renderOAuthCallbackPage } from "../pages/oauth-callback-page.js";
33
+ import { completeMergeProof, extractMergeChallenge } from "./account-merge-handler.js";
32
34
  import { downloadAndStoreAvatar } from "./avatar-handler.js";
35
+ import { assertNotLastLoginMethod, deleteConnectedAccountKeepingPasskeyCount } from "./unbind-account.js";
36
+ /**
37
+ * Persist an OAuth email / verified bit only for an address this provider
38
+ * just asserted. Existing email A + provider B (or any other email) must not
39
+ * flip A's `emailVerified` flag.
40
+ */
41
+ function oauthEmailFields(profile, existingEmail) {
42
+ if (!profile.email)
43
+ return {};
44
+ const verifiedBit = profile.emailVerified === true ? 1 : 0;
45
+ if (!existingEmail) {
46
+ return { email: profile.email, emailVerified: verifiedBit };
47
+ }
48
+ if (existingEmail === profile.email && verifiedBit === 1) {
49
+ return { emailVerified: 1 };
50
+ }
51
+ return {};
52
+ }
33
53
  /** Map of provider name → adapter instance. */
34
54
  const ADAPTERS = {
35
55
  google: new GoogleAdapter(),
@@ -345,16 +365,17 @@ export class OAuthHandler {
345
365
  }
346
366
  }
347
367
  const avatar = profile.avatar || (profile.email ? await fetchGravatarUrl(profile.email) : undefined);
368
+ const emailFields = oauthEmailFields(profile);
348
369
  await store.createUser({
349
370
  did: userDid,
350
371
  pk: userPk,
351
372
  fullName: profile.name,
352
- email: profile.email,
373
+ email: emailFields.email,
353
374
  avatar,
354
375
  sourceProvider: provider,
355
376
  ip,
356
377
  domain: hostname,
357
- emailVerified: profile.email ? 1 : 0,
378
+ emailVerified: emailFields.emailVerified ?? 0,
358
379
  createdBy: userDid,
359
380
  });
360
381
  if (userCount === 0) {
@@ -371,14 +392,11 @@ export class OAuthHandler {
371
392
  await store.updateLastLogin(primaryDid, ip, hostname);
372
393
  // Only fill missing fields — never overwrite user-customized fullName
373
394
  const existingUser = await store.getUserByDid(primaryDid);
374
- const profileUpdate = {};
375
- if (profile.email && !existingUser?.email)
376
- profileUpdate.email = profile.email;
395
+ const profileUpdate = {
396
+ ...oauthEmailFields(profile, existingUser?.email),
397
+ };
377
398
  if (profile.avatar && !existingUser?.avatar)
378
399
  profileUpdate.avatar = profile.avatar;
379
- // OAuth email is verified by the provider
380
- if (profile.email)
381
- profileUpdate.emailVerified = 1;
382
400
  if (Object.keys(profileUpdate).length > 0) {
383
401
  await store.updateUserProfile(primaryDid, profileUpdate, primaryDid);
384
402
  }
@@ -528,7 +546,12 @@ export class OAuthHandler {
528
546
  },
529
547
  });
530
548
  }
531
- let cookie = `${this.options.cookieName}=${jwt}; Path=/; Secure; SameSite=Lax; Max-Age=${this.options.jwtExpiresIn}`;
549
+ // Gate Secure on https like the other handlers — a Secure cookie is dropped
550
+ // outright by the browser over plain http (e.g. a LAN dev server), which would
551
+ // silently land the user back on the login page with no error anywhere.
552
+ const isSecure = new URL(request.url).protocol === "https:";
553
+ const securePart = isSecure ? " Secure;" : "";
554
+ let cookie = `${this.options.cookieName}=${jwt}; Path=/;${securePart} SameSite=Lax; Max-Age=${this.options.jwtExpiresIn}`;
532
555
  const cookieDomain = typeof this.options.rpID === "string" ? this.options.rpID : undefined;
533
556
  if (cookieDomain?.includes("."))
534
557
  cookie += `; Domain=${cookieDomain}`;
@@ -543,6 +566,9 @@ export class OAuthHandler {
543
566
  }
544
567
  /** POST /api/oauth/login — exchange code for JWT cookie. */
545
568
  async handleApiLogin(request, instanceDid) {
569
+ const rejected = requireJsonContentType(request);
570
+ if (rejected)
571
+ return rejected;
546
572
  const result = await this.exchangeOAuthCode(request, instanceDid);
547
573
  if (result instanceof Response)
548
574
  return result;
@@ -594,16 +620,17 @@ export class OAuthHandler {
594
620
  }
595
621
  // Use provider avatar, fall back to Gravatar for providers without avatars (e.g. Apple)
596
622
  const avatar = profile.avatar || (profile.email ? await fetchGravatarUrl(profile.email) : undefined);
623
+ const emailFields = oauthEmailFields(profile);
597
624
  await store.createUser({
598
625
  did: userDid,
599
626
  pk: userPk,
600
627
  fullName: profile.name,
601
- email: profile.email,
628
+ email: emailFields.email,
602
629
  avatar,
603
630
  sourceProvider: provider,
604
631
  ip: apiIp,
605
632
  domain: apiHostname,
606
- emailVerified: profile.email ? 1 : 0,
633
+ emailVerified: emailFields.emailVerified ?? 0,
607
634
  createdBy: userDid,
608
635
  });
609
636
  if (userCount === 0) {
@@ -625,13 +652,11 @@ export class OAuthHandler {
625
652
  await store.updateLastLogin(primaryDid, apiIp, apiHostname);
626
653
  // Only fill missing fields — never overwrite user-customized fullName
627
654
  const existingUser = await store.getUserByDid(primaryDid);
628
- const profileUpdate = {};
629
- if (profile.email && !existingUser?.email)
630
- profileUpdate.email = profile.email;
655
+ const profileUpdate = {
656
+ ...oauthEmailFields(profile, existingUser?.email),
657
+ };
631
658
  if (profile.avatar && !existingUser?.avatar)
632
659
  profileUpdate.avatar = profile.avatar;
633
- if (profile.email)
634
- profileUpdate.emailVerified = 1;
635
660
  if (Object.keys(profileUpdate).length > 0) {
636
661
  await store.updateUserProfile(primaryDid, profileUpdate, primaryDid);
637
662
  }
@@ -687,6 +712,15 @@ export class OAuthHandler {
687
712
  if (!apiAccess.allowed) {
688
713
  return jsonResponse({ ok: false, error: apiAccess.reason, code: "FORBIDDEN" }, 403);
689
714
  }
715
+ const mergeRes = await completeMergeProof({
716
+ store,
717
+ mergeChallenge: result.mergeChallenge,
718
+ fromDid: primaryDid,
719
+ ip: apiIp,
720
+ instanceDid,
721
+ });
722
+ if (mergeRes)
723
+ return mergeRes;
690
724
  const jwtPayload = {
691
725
  type: "user",
692
726
  did: primaryDid,
@@ -699,7 +733,9 @@ export class OAuthHandler {
699
733
  if (jwtUser?.fullName)
700
734
  jwtPayload.fullName = jwtUser.fullName;
701
735
  const { sessionToken: jwt, refreshToken } = await issueSessionTokens(jwtPayload, primaryDid, { jwtSecret: this.options.jwtSecret, jwtExpiresIn: this.options.jwtExpiresIn }, store);
702
- let cookie = `${this.options.cookieName}=${jwt}; Path=/; Secure; SameSite=Lax; Max-Age=${this.options.jwtExpiresIn}`;
736
+ const isSecure = new URL(request.url).protocol === "https:";
737
+ const securePart = isSecure ? " Secure;" : "";
738
+ let cookie = `${this.options.cookieName}=${jwt}; Path=/;${securePart} SameSite=Lax; Max-Age=${this.options.jwtExpiresIn}`;
703
739
  const cookieDomain = typeof this.options.rpID === "string" ? this.options.rpID : undefined;
704
740
  if (cookieDomain?.includes("."))
705
741
  cookie += `; Domain=${cookieDomain}`;
@@ -708,9 +744,10 @@ export class OAuthHandler {
708
744
  "Cache-Control": "private, no-store",
709
745
  });
710
746
  headers.append("Set-Cookie", cookie);
711
- // Clear invitation cookie after consumption
747
+ // Clear invitation cookie after consumption — the attributes must match the
748
+ // ones it was set with, so Secure is gated here too.
712
749
  if (invitationId) {
713
- headers.append("Set-Cookie", "pending_invitation=; Path=/; Max-Age=0; Secure; SameSite=Lax");
750
+ headers.append("Set-Cookie", `pending_invitation=; Path=/; Max-Age=0;${securePart} SameSite=Lax`);
714
751
  }
715
752
  return new Response(JSON.stringify({ ok: true, sessionToken: jwt, refreshToken, did: primaryDid }), {
716
753
  status: 200,
@@ -719,6 +756,9 @@ export class OAuthHandler {
719
756
  }
720
757
  /** POST /api/oauth/bind — bind OAuth provider to current user. */
721
758
  async handleBind(request, instanceDid) {
759
+ const rejected = requireJsonContentType(request);
760
+ if (rejected)
761
+ return rejected;
722
762
  const caller = await this.verifyCaller(request);
723
763
  if (!caller)
724
764
  return jsonResponse({ error: "Authentication required" }, 401);
@@ -795,12 +835,10 @@ export class OAuthHandler {
795
835
  avatar: profile.avatar,
796
836
  }),
797
837
  }, callerDid);
798
- // Keep `sourceProvider` pointing at a provider the caller still holds a row
799
- // for. `handleUnbind` refuses to remove the registration account by
800
- // comparing against this field, so leaving it on the old provider would let
801
- // the caller delete the row it was meant to protect. Only move it when no
802
- // other row carries the old provider — the relabelled row already reports
803
- // the new one, so this reads as "did that provider disappear entirely?".
838
+ // Keep display-only `sourceProvider` pointing at a provider the caller
839
+ // still holds a row for. Security guards read `primaryCredentialDid`.
840
+ // Only move the label when no other row carries the old provider the
841
+ // relabelled row already reports the new one.
804
842
  const user = await store.getUserByDid(callerDid);
805
843
  if (user?.sourceProvider === previousProvider) {
806
844
  const remaining = await store.getConnectedAccountsByUserDid(callerDid);
@@ -819,6 +857,9 @@ export class OAuthHandler {
819
857
  }
820
858
  /** POST /api/oauth/unbind — unbind OAuth provider from current user. */
821
859
  async handleUnbind(request, instanceDid) {
860
+ const rejected = requireJsonContentType(request);
861
+ if (rejected)
862
+ return rejected;
822
863
  const caller = await this.verifyCaller(request);
823
864
  if (!caller)
824
865
  return jsonResponse({ error: "Authentication required" }, 401);
@@ -832,23 +873,20 @@ export class OAuthHandler {
832
873
  const { provider } = body;
833
874
  if (!provider)
834
875
  return jsonResponse({ error: "Missing provider" }, 400);
835
- // Prevent unbinding the user's registration provider
836
- const user = await this.options.store.getUserByDid(caller.did);
837
- if (user?.sourceProvider === provider) {
838
- return jsonResponse({ error: "Cannot unbind your registration provider" }, 403);
876
+ // Own-property check: `ADAPTERS[provider]` is true for "__proto__" / "constructor".
877
+ if (typeof provider !== "string" || !Object.hasOwn(ADAPTERS, provider)) {
878
+ return jsonResponse({ error: "Invalid provider" }, 400);
839
879
  }
840
880
  const account = await this.options.store.getConnectedAccountByProviderAndUser(provider, caller.did);
841
881
  if (!account)
842
882
  return jsonResponse({ error: "Account not bound" }, 404);
843
- // Last-credential guard. The `sourceProvider` check above is necessary but
844
- // not sufficient: it can name a provider the user no longer holds a row for
845
- // (relabelled by a bind, or imported with a stale value), in which case it
846
- // matches nothing and lets the user delete their only way back in.
847
- const accounts = await this.options.store.getConnectedAccountsByUserDid(caller.did);
848
- if (accounts.length <= 1) {
849
- return jsonResponse({ error: "Cannot remove your only login method" }, 403);
850
- }
851
- await this.options.store.deleteConnectedAccount(account.did);
883
+ // sourceProvider is display-only. The registration pointer is
884
+ // primaryCredentialDid; unbinding a non-last primary reassigns inside
885
+ // deleteConnectedAccount. Last-credential still blocks lockout.
886
+ const last = await assertNotLastLoginMethod(this.options.store, caller.did);
887
+ if (!last.ok)
888
+ return jsonResponse({ error: last.error }, last.status);
889
+ await deleteConnectedAccountKeepingPasskeyCount(this.options.store, account, caller.did);
852
890
  await this.options.store.createAuditLog({
853
891
  action: "oauth.unbind",
854
892
  operatorDid: caller.did,
@@ -929,7 +967,14 @@ export class OAuthHandler {
929
967
  }
930
968
  catch { /* ignore parse errors */ }
931
969
  }
932
- return { provider, profile, wallet: { address: wallet.did, publicKey: wallet.pk }, invitationId };
970
+ const mergeChallenge = extractMergeChallenge(request, body);
971
+ return {
972
+ provider,
973
+ profile,
974
+ wallet: { address: wallet.did, publicKey: wallet.pk },
975
+ invitationId,
976
+ mergeChallenge,
977
+ };
933
978
  }
934
979
  /** Load all OAuth configs from D1 settings. */
935
980
  async loadAllConfigs(instanceDid) {
@@ -971,13 +1016,32 @@ export class OAuthHandler {
971
1016
  const forwarded = request.headers.get("X-Forwarded-Host");
972
1017
  const host = forwarded || request.headers.get("Host");
973
1018
  if (host) {
974
- // Determine protocol: X-Forwarded-Proto, or infer from host/url
975
- const proto = request.headers.get("X-Forwarded-Proto")
976
- || (host.includes("localhost") ? "http" : "https");
977
- return `${proto}://${host}`;
1019
+ return `${this.resolveProto(request, host, !!forwarded)}://${host}`;
978
1020
  }
979
1021
  return new URL(request.url).origin;
980
1022
  }
1023
+ /**
1024
+ * Determine the public-facing protocol, in order of trustworthiness:
1025
+ *
1026
+ * 1. `X-Forwarded-Proto` — the proxy told us explicitly. Chained proxies append,
1027
+ * so the leftmost value is the one the client actually used.
1028
+ * 2. `X-Forwarded-Host` present but no proto — we are behind a proxy that gave no
1029
+ * hint. `request.url` only describes the internal hop (usually plain http), so
1030
+ * assume the edge terminates TLS.
1031
+ * 3. No forwarding headers at all — direct connection, so `request.url` carries the
1032
+ * protocol the client actually used. Never guess from the host here: a plain-http
1033
+ * dev server on a LAN address (e.g. `wrangler dev` on 192.168.x.x:8790) would be
1034
+ * guessed as https, and the resulting redirect_uri no longer matches the callback
1035
+ * URL registered with the OAuth provider.
1036
+ */
1037
+ resolveProto(request, host, proxied) {
1038
+ const forwardedProto = request.headers.get("X-Forwarded-Proto");
1039
+ if (forwardedProto)
1040
+ return forwardedProto.split(",")[0].trim();
1041
+ if (proxied)
1042
+ return host.includes("localhost") ? "http" : "https";
1043
+ return new URL(request.url).protocol.replace(":", "");
1044
+ }
981
1045
  /** Verify JWT from cookie — returns caller identity or null. */
982
1046
  async verifyCaller(request) {
983
1047
  const cookies = request.headers.get("Cookie") || "";
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-handler.js","sourceRoot":"","sources":["../../src/handlers/oauth-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-handler.js","sourceRoot":"","sources":["../../src/handlers/oauth-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"passkey-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/passkey-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AA6CrE;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAAC,CAuCR;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAC,CAA0C;IACvD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,WAAW;IAUhC,qDAAqD;IACrD,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiCtE,6DAA6D;IACvD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiB9D;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiCxF;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAY7F,mFAAmF;IAC7E,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2GvM;;;;+DAI2D;YAC7C,qBAAqB;IAkDnC;;;yFAGqF;YACvE,sBAAsB;IAmDpC,6DAA6D;YAC/C,iBAAiB;IAsB/B;;;yFAGqF;YACvE,kBAAkB;YA0ClB,wBAAwB;YAyKxB,0BAA0B;IAmGxC,uFAAuF;IACvF,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ;IAyClC;;;;;;;;;OASG;YACW,4BAA4B;IAiC1C,0GAA0G;YAC5F,qBAAqB;IAoCnC,+FAA+F;YACjF,mBAAmB;IAwFjC,iEAAiE;YACnD,uBAAuB;IA+CrC,qEAAqE;YACvD,mBAAmB;YAoCnB,QAAQ;IAyCtB;;;OAGG;YACW,gBAAgB;IA8B9B,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,aAAa;CAWtB"}
1
+ {"version":3,"file":"passkey-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/passkey-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAgDrE;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAAC,CAuCR;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAC,CAA0C;IACvD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,WAAW;IAUhC,qDAAqD;IACrD,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiCtE,6DAA6D;IACvD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiB9D;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiCxF;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAY7F,mFAAmF;IAC7E,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2GvM;;;;+DAI2D;YAC7C,qBAAqB;IAkDnC;;;yFAGqF;YACvE,sBAAsB;IAsDpC,6DAA6D;YAC/C,iBAAiB;IAsB/B;;;yFAGqF;YACvE,kBAAkB;YA8ClB,wBAAwB;YAyKxB,0BAA0B;IA4GxC,uFAAuF;IACvF,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ;IAyClC;;;;;;;;;OASG;YACW,4BAA4B;IAiC1C,0GAA0G;YAC5F,qBAAqB;IAoCnC,+FAA+F;YACjF,mBAAmB;IAwFjC,iEAAiE;YACnD,uBAAuB;IA6DrC,qEAAqE;YACvD,mBAAmB;YAoCnB,QAAQ;IAyCtB;;;OAGG;YACW,gBAAgB;IA8B9B,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,aAAa;CAWtB"}
@@ -14,6 +14,7 @@ import { deriveAccessKeyId, isAccessKeyToken } from "../access/access-key-util.j
14
14
  import { checkLoginAccess } from "../access/login-access-check.js";
15
15
  import { LOGIN_PROVIDER } from "../constants.js";
16
16
  import { ensureInstanceMembership } from "../identity/auto-membership.js";
17
+ import { requireJsonContentType } from "../identity/json-content-type.js";
17
18
  import { verifyJWT } from "../identity/jwt.js";
18
19
  import { derivePasskeyDID } from "../identity/passkey-did.js";
19
20
  import { issueSessionTokens } from "../identity/session-tokens.js";
@@ -21,6 +22,8 @@ import { generateChallengeOptions, verifyAuthentication, verifyRegistration } fr
21
22
  import { detectLocale } from "../locale.js";
22
23
  import { consoleLogger } from "../logger.js";
23
24
  import { renderLoginPage } from "../pages/login-page.js";
25
+ import { completeMergeProof, extractMergeChallenge } from "./account-merge-handler.js";
26
+ import { assertNotLastLoginMethod, deleteConnectedAccountKeepingPasskeyCount } from "./unbind-account.js";
24
27
  const DEFAULT_COOKIE_NAME = "login_token";
25
28
  const DEFAULT_EXPIRES_IN = 7 * 24 * 60 * 60; // 7 days
26
29
  const MAX_NAME_LENGTH = 64;
@@ -376,6 +379,9 @@ export class Auth {
376
379
  * 1. Admin UI: body = { challengeId, credential, name? }
377
380
  * 2. Connect SDK: body = WebAuthn credential directly, query ?challenge=<base64> */
378
381
  async handleRegisterResponse(request, instanceDid) {
382
+ const rejected = requireJsonContentType(request);
383
+ if (rejected)
384
+ return rejected;
379
385
  const url = new URL(request.url);
380
386
  const body = (await request.json());
381
387
  // Connect SDK sends credential as entire body, challenge in query param
@@ -439,6 +445,9 @@ export class Auth {
439
445
  * 1. Admin UI: body = { challengeId, credential }
440
446
  * 2. Connect SDK: body = WebAuthn credential directly, query ?challenge=<base64> */
441
447
  async handleAuthResponse(request, instanceDid) {
448
+ const rejected = requireJsonContentType(request);
449
+ if (rejected)
450
+ return rejected;
442
451
  const url = new URL(request.url);
443
452
  const body = (await request.json());
444
453
  const credential = body.credential || (body.id ? body : undefined);
@@ -465,6 +474,7 @@ export class Auth {
465
474
  hostname,
466
475
  cookieDomain,
467
476
  request,
477
+ mergeChallenge: extractMergeChallenge(request, body),
468
478
  };
469
479
  try {
470
480
  return await this.handleAuthenticationVerify(credential, ctx, instanceDid);
@@ -616,7 +626,7 @@ export class Auth {
616
626
  const credentialData = credential;
617
627
  const credentialId = credentialData.id;
618
628
  // Look up stored passkey by credential ID
619
- const stored = await this.store.getConnectedAccountById(credentialId);
629
+ const stored = await this.store.getConnectedAccountById(credentialId, "passkey");
620
630
  if (!stored?.extra) {
621
631
  this.logger.warn({ message: "passkey auth: unknown credential id", mod: "passkey", credentialId, ip, hostname, instanceDid });
622
632
  return errorResponse("Unknown credential");
@@ -681,6 +691,15 @@ export class Auth {
681
691
  ip,
682
692
  instanceDid,
683
693
  });
694
+ const mergeRes = await completeMergeProof({
695
+ store: this.store,
696
+ mergeChallenge: ctx.mergeChallenge,
697
+ fromDid: stored.userDid,
698
+ ip,
699
+ instanceDid,
700
+ });
701
+ if (mergeRes)
702
+ return mergeRes;
684
703
  return this.issueJWT(stored.userDid, stored.pk ?? "", user?.fullName ?? undefined, role, cookieDomain, request, "passkey", instanceDid);
685
704
  }
686
705
  /** Clear auth cookie. GET → redirect to return_to or Referer, POST → JSON response. */
@@ -865,6 +884,9 @@ export class Auth {
865
884
  }
866
885
  /** POST /disconnect — remove a passkey from the current user. */
867
886
  async handlePasskeyDisconnect(request, instanceDid) {
887
+ const rejected = requireJsonContentType(request);
888
+ if (rejected)
889
+ return rejected;
868
890
  const caller = await this.verifyFull(request);
869
891
  if (!caller)
870
892
  return errorResponse("Authentication required", 401);
@@ -883,16 +905,26 @@ export class Auth {
883
905
  if (!account || account.userDid !== caller.did) {
884
906
  return errorResponse("Passkey not found", 404);
885
907
  }
886
- // sourceProvider protection: cannot remove last passkey if registered via passkey
908
+ // Last-passkey guard reads the primary FK, not sourceProvider. Relabel of
909
+ // sourceProvider must not let the caller delete the last passkey when the
910
+ // primary credential is still a passkey they own.
887
911
  const user = await this.store.getUserByDid(caller.did);
888
- if (user?.sourceProvider === "passkey") {
889
- const allPasskeys = await this.store.getConnectedAccountsByProviderAndUser("passkey", caller.did);
890
- if (allPasskeys.length <= 1) {
891
- return errorResponse("Cannot remove your last passkey (registration provider)", 403);
912
+ if (user?.primaryCredentialDid) {
913
+ const primary = user.primaryCredentialDid === account.did
914
+ ? account
915
+ : await this.store.getConnectedAccountByDid(user.primaryCredentialDid);
916
+ if (primary?.provider === "passkey" && primary.userDid === caller.did) {
917
+ const allPasskeys = await this.store.getConnectedAccountsByProviderAndUser("passkey", caller.did);
918
+ if (allPasskeys.length <= 1) {
919
+ return errorResponse("Cannot remove your last passkey (registration provider)", 403);
920
+ }
892
921
  }
893
922
  }
894
- await this.store.deleteConnectedAccount(passkeyDid);
895
- await this.store.decrementPasskeyCount(caller.did);
923
+ // Global last-credential guard — same helper as oauth / wallet unbind.
924
+ const last = await assertNotLastLoginMethod(this.store, caller.did);
925
+ if (!last.ok)
926
+ return errorResponse(last.error, last.status);
927
+ await deleteConnectedAccountKeepingPasskeyCount(this.store, account, caller.did);
896
928
  const ip = request.headers.get("CF-Connecting-IP") ?? undefined;
897
929
  await this.store.createAuditLog({
898
930
  action: "passkey.disconnect",