mirror of
https://github.com/better-auth/better-auth.git
synced 2026-10-19 11:24:57 -05:00
OAuth providers without an issuer shared the `local:` namespace with credential and SIWE identities, so a provider ID could resolve to an internal method's identity and inherit its user. An identity match skips every implicit-linking gate, which made that namespace the only thing standing between an aliased provider and another method's account. Token and account-info routes resolved their provider configuration from the public `providerId` alias, so an SSO provider registered under a social provider's alias could redeem its stored tokens against that provider's client credentials. Provider instances already namespace identity and account keys, so resolve configuration from them too. TikTok is typed as always returning `union_id`, but the field is not guaranteed. Reject that authentication instead of deriving a subject from a missing value. Correct the SSO domain rule, which rejects a provider unless every entry resolves; the joins section, which documented an `experimental` option that does not exist; and the Okta example, which enabled IdP-initiated SAML that the plugin disables by default.