Commit Graph
371 Commits
Author SHA1 Message Date
better-release[bot]andGitHub 8b1e759c07 chore: release v1.7.0-beta.5 (#9905) 2026-06-10 12:34:04 -07:00
Gustavo Valverde bf7f2c5b4e chore: sync main to next 2026-06-10 11:30:38 -07:00
better-release[bot]andGitHub 1a3c8c478a chore: release v1.6.16 (#9958) 2026-06-09 22:32:25 -07:00
Bereket EngidaandGitHub cb1cbfa4cc fix: address bug findings across packages (#9974) 2026-06-09 19:46:12 -07:00
Gustavo ValverdeandGitHub a6b0295df3 fix(sso): consume SAML AuthnRequest atomically (#9972) 2026-06-10 01:58:45 +00:00
better-release[bot]andGitHub 03e0e36a98 chore: release v1.6.15 (#9886) 2026-06-08 06:57:06 -07:00
Gustavo ValverdeandGitHub af572166a2 fix(auth)!: harden validateUserInfo source contract (#9940) 2026-06-07 22:52:59 -07:00
0cbaf81bed feat(oauth): server-trusted state channel; fix anonymous cookieless linking (#9930)
Co-authored-by: Taesu <166604494+bytaesu@users.noreply.github.com>
2026-06-08 01:00:05 +00:00
41cca606d1 feat(auth): add user.validateUserInfo provisioning gate (#9864)
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
2026-06-07 14:34:48 -07:00
bff65fd620 fix(sso): pass clockSkew to samlify clockDrifts to fix ERR_SUBJECT_UNCONFIRMED (#9748)
Co-authored-by: Maxwell <145994855+ping-maxwell@users.noreply.github.com>
Co-authored-by: ping-maxwell <maxwell.multinite@gmail.com>
2026-06-06 04:20:14 +00:00
Gustavo ValverdeandGitHub 40b392ae21 feat(oauth)!: accumulate granted scopes as grantedScopes string[] (#9825) 2026-06-04 17:54:52 -04:00
better-release[bot]andGitHub 5038d41ca2 chore: release v1.6.14 (#9846) 2026-06-02 16:56:28 -04:00
better-release[bot]andGitHub a5e2442e3c chore: release v1.7.0-beta.4 (#9534) 2026-05-31 14:29:39 +01:00
better-release[bot]andGitHub a6f38c72ee chore: release v1.6.13 (#9804) 2026-05-31 12:41:17 +01:00
Gustavo Valverde 8bfd30f10a style: apply biome formatting to synced files (#9533) 2026-05-31 01:30:41 +01:00
Gustavo Valverde 71326af813 fix(sso): apply samlify 2.13.1 signed-assertion XML-injection fix on refactored routes (#9821)
Re-applies main's #9821 onto next's rebuilt SAML routes. next kept the
createSP/createIdP helpers and consolidated saml-pipeline, so the fix is
expressed there rather than in the inline construction main patched.

- normalizePem trims leading indentation from PEM private keys so samlify
  2.13.1 (OpenSSL 3 native parsing) loads keys pasted with surrounding
  whitespace; applied in the SP/IdP helpers.
- processSAMLResponse reads identity attributes through an attr() accessor
  that collapses samlify 2.13's string | string[] attribute values to the
  single-valued identity fields.
- the SLO LogoutResponse is built by passing the parsed request to samlify
  (filling InResponseTo/Issuer/IssueInstant/Destination/StatusCode) instead
  of manual template string replacement.

The samlify ^2.13.1 and fast-xml-parser ^5.8.0 bumps land via the merge.
saml.test.ts unions next's SAML suites with #9821's key-normalization and
SLO regression tests (120 passing).
2026-05-31 00:30:51 +01:00
Gustavo Valverde 9247cb8528 fix(sso): enforce SSRF validation, org-admin registration, SLO-by-token, and error encoding on refactored routes (#9574, #9220, #9818, #9722, #9702)
Re-applies five main fixes onto next's rebuilt SSO routes. next's refactor
kept the supporting helpers (the SSRF host check, the SAMLSessionRecord
token field) but dropped the call sites, so the merge left them present yet
unused. This wires them back.

- #9574: registerSSOProvider and updateSSOProvider now run
  validateSkipDiscoveryEndpoints on user-supplied OIDC endpoints, rejecting
  private/link-local hosts (for example 169.254.169.254). The merge included
  the helper but never called it, leaving advisory GHSA-5rr4-8452-hf4v open
  on next. Validation runs even without skipDiscovery.
- #9220: registering an SSO provider requires an organization owner/admin
  role when the organization plugin is active, blocking a low-privilege
  member from registering a malicious IdP.
- #9818: SAML Single Logout revokes the session by token; the SAML session
  record now carries the session token.
- #9722: the OIDC callback error redirect encodes the error value.
- #9702: a before-callback hook rejection in the OIDC and SAML callbacks
  redirects to the per-flow errorURL with the hook's code, instead of
  surfacing a raw response.

Two stale IDP-bounce assertions are updated to next's migrated state-error
vocabulary (state_not_found). All SSO regression suites pass (SSRF,
org-admin, SLO, hook-rejection, encoding).

(cherry picked from commit c3b238f71a6f66914f12db5f615504e2cf855bfc)
2026-05-31 00:10:48 +01:00
Gustavo Valverde ef4fb0ff95 chore: merge main into next (#9533)
Sync main (through #9821/#9820/#9822/#9768) into next. Conflicting
package.json files keep next's version and intentional divergences (for
example the cli's c12 v4) while taking main's dependency updates, including
the samlify 2.13.1 and fast-xml-parser security bumps; the lockfile is
regenerated from the reconciled set. The 13 source/doc/test conflicts take
next's refactored architecture as the baseline; main's colliding fixes are
re-applied on top in the following per-domain commits.

Clean main fixes land via this merge, including the auto-restored
account-takeover defenses #9578 and #9577.
2026-05-31 00:10:16 +01:00
Gustavo ValverdeandGitHub 4c3bbc4e56 fix(sso): update samlify to 2.13.1 for signed-assertion XML injection (#9821) 2026-05-30 23:58:05 +01:00
43c08a2bc7 fix(account): scope OAuth account identity and fix buggy internalAdapter helpers (#9818)
Co-authored-by: Krish Garg <kgarg@chapman.edu>
2026-05-30 20:48:10 +00:00
better-release[bot]andGitHub c0c574ea50 chore: release v1.6.12 (#9590) 2026-05-29 22:28:58 +01:00
TaesuandGitHub f47aa4aa96 fix(sso): url-encode error query value in OIDC callback redirect (#9722) 2026-05-22 02:52:32 +00:00
TaesuandGitHub 23dbe1ad0e fix: redirect hook rejections to errorCallbackURL across auth callback flows (#9702) 2026-05-22 00:14:48 +00:00
Gustavo ValverdeandGitHub e7eb45b065 feat(oauth): per-request additionalParams and loginHint (#9305) 2026-05-19 17:18:43 +00:00
03e6c94e96 feat(generic-oauth,sso): support IDP-initiated flows via secure bounce (#9301)
Co-authored-by: Menachem Hornbacher <mhornbacher@kiddom.co>
2026-05-19 12:29:04 +00:00
602ec40293 feat(sso)!: support multiple IdP signing certificates (#8805)
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
2026-05-18 03:07:37 +00:00
Gustavo ValverdeandGitHub e637c7d8ff fix(deps): resolve dependabot security alerts (#9662) 2026-05-18 01:41:47 +00:00
Gustavo ValverdeandGitHub 1e5b808472 refactor(oauth): single-source Basic credentials + getHttpTestInstance (#9657) 2026-05-17 19:23:45 +00:00
aebf66d8e6 feat: add token endpoint client authentication (#9625)
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
2026-05-16 18:27:15 +00:00
better-release[bot]andGitHub f41514ef07 chore: release v1.6.11 (#9532) 2026-05-12 17:30:34 +01:00
37f60cb176 fix(sso): validate user-supplied OIDC endpoint URLs at registration and update (#9574)
Co-authored-by: vaadata-poyetont <poyetont@vaadata.com>
2026-05-12 13:12:42 +00:00
86765f1597 fix(sso): require org admin role to register SSO providers (#9220)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
2026-05-11 17:04:01 +00:00
better-release[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
4839a2d761 chore: release v1.7.0-beta.3 (#9323)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-09 19:28:11 +00:00
Taesu 2b83087180 chore: sync main to next 2026-05-10 03:45:29 +09:00
better-release[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
cbb5014cdf chore: release v1.6.10 (#9350)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-09 14:31:47 +00:00
Craig (Michael) ThompsonandGitHub 006e809b92 fix(sso): use findSAMLProvider in spMetadata so defaultSSO works (#9398) 2026-04-29 12:56:44 -07:00
better-release[bot]andGitHub f484269228 chore: release v1.6.9 (#9341) 2026-04-24 06:25:08 +01:00
better-release[bot]andGitHub b289ac6c4b chore: release v1.6.8 (#9316) 2026-04-23 11:31:03 +01:00
better-release[bot]andGitHub d3bde2d21f chore: release v1.7.0-beta.2 (#9207) 2026-04-22 17:23:06 +01:00
Gustavo Valverde eb3cd10d50 chore: resolve main-to-next sync conflicts
- keep next package versions at 1.7.0-beta.1
- keep both changelog streams by inserting the stable 1.6.5, 1.6.6, and 1.6.7 sections below the 1.7.0-beta entries
- keep the cimd and dash deps on demo/nextjs (next-only); regenerate pnpm-lock.yaml
- resolve TODO(sync-from-main-9226) in oauth-provider authorize.ts: findRegisteredRedirectUri now uses isLoopbackIP from @better-auth/core/utils/host to cover the full 127.0.0.0/8 range per RFC 8252 §7.3
- drop the unused saml import that main's #9262 added to sso/src/routes/sso.ts; next already migrated to saml-pipeline
2026-04-22 14:54:27 +01:00
better-release[bot]andGitHub f8076d141a chore: release v1.6.7 (#9289) 2026-04-22 12:36:30 +01:00
better-release[bot]andGitHub 0290077760 chore: release v1.6.6 (#9222) 2026-04-21 17:42:18 +01:00
Jonathan SaminesandGitHub fe5f36c7e3 chore(sso): fix samlify ESM/CJS loading compat issue (#9262) 2026-04-21 16:06:04 +00:00
better-release[bot]andGitHub c8a91f4167 chore: release v1.6.5 (#9209) 2026-04-16 11:05:30 +01:00
Gustavo Valverde 225976c7d2 chore: main to next conflict resolution
Resolve the main to next sync discrepancies after the v1.6.4 release.

Conflict resolution:
- keep next package versions at 1.7.0-beta.1
- keep both changelog streams by inserting the stable 1.6.4 sections below the 1.7.0-beta entries
- restore the next pre-release accumulator changesets that the stable release deleted on main
2026-04-15 15:40:35 +01:00
better-release[bot]andGitHub 9ec849ff71 chore: release v1.6.4 (#9175) 2026-04-15 13:00:42 +01:00
better-release[bot]andGitHub d8dfa515e2 chore: release v1.7.0-beta.1 (#9120) 2026-04-14 12:29:23 +01:00
Gustavo Valverde 834841fbc9 chore: sync v1.6.3 release into next
Brings main's `chore: release v1.6.3 (#9081)` commit into next after the
stable release. Conflict resolution:

- `packages/*/package.json`: keep next's `1.7.0-beta.0` (per the release
  bot's standard rule: next is always ahead of main in version).
- `packages/*/CHANGELOG.md`: keep both version entries side-by-side. Next's
  `1.7.0-beta.0` section stays on top; main's new `1.6.3` section slots in
  below. Each entry describes its own branch's release.
- `.changeset/*.md`: restore the 14 changesets git auto-deleted. Next is in
  pre-release mode (`.changeset/pre.json` `mode: "pre"`), so changesets
  accumulate across beta cuts and are only consumed on `exit-pre`. Main's
  release deleted them from main; next must keep them for its own pre-release
  accumulator.
2026-04-14 12:10:23 +01:00
better-release[bot]andGitHub 6f17bb3ebd chore: release v1.6.3 (#9081) 2026-04-14 12:04:31 +01:00
Gustavo ValverdeandGitHub 960304354a fix(sso): upgrade samlify to 2.12.0 with XPath injection and XXE fixes (#9121) 2026-04-11 10:46:50 +00:00