Commit Graph
358 Commits
Author SHA1 Message Date
better-release[bot]andGitHub a5e2442e3c chore: release v1.7.0-beta.4 (#9534) 2026-05-31 14:29:39 +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
Gustavo ValverdeandGitHub b70f025bfa refactor(sso)!: remove callbackUrl, consolidate ACS endpoint, fix SLO (#9117) 2026-04-11 10:03:56 +00:00
better-release[bot]andGitHub c8cf0f7c1a chore: release v1.7.0-beta.0 (#9073) 2026-04-10 21:29:25 +01:00
Gustavo Valverde ca5d303607 fix(sso): guard toLowerCase against falsy email and use safe redirect
- Add empty string fallback before .toLowerCase() to prevent TypeError
  when both mapped email attribute and extract.nameID are falsy
- Use validated samlRedirectUrl instead of raw callbackUrl in error
  redirect to maintain open-redirect and loop-protection guarantees
2026-04-10 21:06:47 +01:00
Gustavo Valverde 97fca6a1cf refactor(sso): adopt saml-pipeline and port security fixes
Use main's saml-pipeline.ts for SAML response processing, replacing
~1000 lines of duplicated inline code in sso.ts. Port the four
security fixes from #9055 into the pipeline:

- Fix InResponseTo field path (extract.response?.inResponseTo)
- Add Audience Restriction validation
- Fix SessionIndex stored as string, not object
- Fix allowIdpInitiated default to false

Delegate to validateInResponseTo/validateAudience from
response-validation.ts instead of reimplementing inline.

Graft private_key_jwt (RFC 7523) support from #8836 onto main's
pipeline-based sso.ts.
2026-04-10 20:25:41 +01:00
Gustavo Valverde 28ccc8cda9 chore: resolve main-to-next sync conflicts
Conflicts resolved:
- docs/content/docs/plugins/2fa.mdx: kept next's OTP feature, applied main's exported const pattern
- docs/content/docs/plugins/oauth-provider.mdx: kept main's formatting, added back private_key_jwt docs
- docs/content/docs/plugins/sso.mdx: kept next's version with private_key_jwt and SAML options
- packages/sso/src/routes/sso.ts: kept next's version (has security fixes and private_key_jwt)
2026-04-10 19:11:05 +01:00
Gustavo ValverdeandGitHub 52c47517a2 fix(sso): unify SAML response processing and fix bugs (#9097) 2026-04-10 15:00:26 +00:00
Gustavo ValverdeandGitHub 93d3871bd2 feat(oauth): add private_key_jwt client authentication (RFC 7523) (#8836) 2026-04-10 08:22:05 +00:00
Gustavo ValverdeandGitHub b790144a2e fix(sso)!: harden SAML response validation (InResponseTo, Audience, SessionIndex) (#9055) 2026-04-09 17:30:01 +00:00
better-release[bot]andGitHub 700d298e1e chore: version packages (#9052) 2026-04-09 15:19:07 +01:00
Gustavo ValverdeandGitHub 608d8c3082 fix(sso): include RelayState in signed SAML AuthnRequests (#9058) 2026-04-09 12:05:02 +00:00
5e5d3f62fc fix(sso): normalize SAMLResponse whitespace at request boundary (#8968)
Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
2026-04-09 11:04:10 +00:00
better-release[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
85bb710edc chore: version packages (#9018)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-08 19:22:59 +00:00
better-release[bot] d666a03372 chore: exit pre-release mode for v1.6.0 2026-04-06 14:41:56 +00:00