Open-source alternative to Firebase Authentication

Teams replacing Firebase Authentication can self-host Supabase Auth, Appwrite Auth or ZITADEL inside their own infrastructure. The right choice depends on whether they need a backend bundle or enterprise identity federation.

On this page

Which open-source option replaces Firebase Authentication?

If your Firebase Authentication deployment is under renewal, residency or lock-in pressure, the short answer is that Supabase Auth and Appwrite's auth cover app sign-in bundled with a database, while ZITADEL fits enterprise SAML and OIDC federation. All three run self-hosted in your own infrastructure. The reason this matters is that Firebase Authentication processes data only in the United States, so a residency requirement can't be met by changing Firestore locations alone. Moving identity to a self-hosted platform lets you choose the region and keep user records next to the rest of your data.

Choose by the job, not the brand. Supabase Auth is built around Postgres, so users live in the auth.users table next to your application data and row level security policies can reference them. Appwrite's auth sits inside a stack that also covers databases, storage and functions, which suits teams replacing the whole Firebase product set. ZITADEL is the stronger fit when you need instances, organizations, SCIM v2 provisioning and a different identity provider per customer. Before you commit, confirm which social providers, multi-factor methods and session behavior your apps need, because these differ between the three and between their hosted and self-hosted editions.

How Firebase Authentication capabilities map to open-source options

This table compares Firebase Authentication features with Supabase Auth, Appwrite Auth and ZITADEL. Cells marked as confirm point to items the vendor documentation must settle for your version before you commit. Read the table against your own sign-in flows, and treat ZITADEL as the stronger fit where SAML, SCIM and per-customer identity providers are central.

CapabilitySupabase AuthAppwrite AuthZITADEL
Email and passwordIncluded in the self-hosted Auth service. Confirm scrypt hash import for Firebase users.Built in. Users API accepts imported Scrypt modified hashes, so existing passwords can carry over.Built in, with passwords usable alongside passkeys. Firebase migration guide covers the import path.
Social providersConfigured per provider in self-hosted settings. Confirm provider list and redirect URLs.Configured in the Console. Confirm which Firebase OAuth links must be re-established after import.Federates Google, GitHub, GitLab, Apple, Entra ID and Okta over OIDC or SAML.
Anonymous and phone sign-inConfirm anonymous and phone (SMS or OTP) support and provider costs in Supabase Auth docs.Confirm anonymous sessions and phone provider setup in Appwrite Auth docs.Confirm phone and anonymous flows in ZITADEL login documentation for your version.
Custom claims and rolesClaims travel in JWTs signed with your project key pair. Confirm how custom claims are added.Roles and labels on users. Confirm how they map into permissions your app checks.Projects group applications, roles and grants inside an organization. Claims come from grants.
Session tokensIssues JWTs signed with keys from the self-hosting secret generation scripts. Confirm token lifetimes.Session and API key model differs from Firebase ID tokens. Confirm token lifetime settings.Implements OpenID Connect and OAuth 2.0 tokens. Confirm lifetimes in your instance settings.
Multi-factor and passkeysConfirm MFA and passkey support in the Auth version your Docker release pins.Confirm MFA and passkey options in the Auth reference for your Appwrite version.Passkeys based on FIDO2 and WebAuthn, with fallback to password login.
SAML and SCIM for enterprise sign-inConfirm SAML SSO and SCIM availability in self-hosted Auth before planning enterprise tenants.Confirm SAML and SCIM support in Appwrite docs before promising enterprise onboarding.SAML 2.0 and a SCIM v2 provisioning interface, with a separate identity provider per organization.
Admin user managementStudio manages users in a single project. Multi-project admin is not available when self-hosting.Console manages users and sessions. Confirm bulk operations and audit output for your needs.Instances, organizations and projects isolate tenants. Admin tasks run through the console and APIs.
Operating boundarySelf-hosted Supabase is community-supported. Plan internal ownership of upgrades and incidents.Helm datastores run a single replica without failover. Use managed or operator-run databases for production.Recommends a Kubernetes cluster with the official Helm chart for high availability. Database versions 14 to 18.

When Supabase Auth, Appwrite Auth or ZITADEL fits best

Each option below can replace Firebase Authentication, but they fit different shapes of team. The right choice depends on whether auth sits inside a wider backend you also want to replace, or whether it must serve enterprise sign-in across many customer organizations. Check licensing, database and operating model before committing to a migration path.

Supabase Auth for Postgres-first apps

Supabase Auth (GoTrue) fits teams that already plan to move data into Postgres and want row level security to read the same user identity. Self-hosted Supabase is Apache-2.0 and runs as a Docker Compose stack, with Auth pinned to a specific upstream version in each configuration release. Check that your user migration keeps the Firebase scrypt parameters working, and confirm which social providers you need to re-link. Self-hosted Supabase is community-supported, so plan your own on-call and patching.

Appwrite Auth for a full Firebase-style backend

Appwrite Auth fits teams replacing Firebase Authentication along with Firestore, Storage and Functions, since Appwrite covers those services in one product. Appwrite is BSD-3-Clause and provisions PostgreSQL by default for new installs, with MariaDB and MongoDB also supported. Its Users API accepts several imported hash formats, which helps when moving users without forced resets. The trade-off is that the built-in datastores run a single replica without failover, so production data needs managed services or operators.

ZITADEL for enterprise and multi-tenant sign-in

ZITADEL fits when auth is the main requirement, especially for B2B products where each customer organization brings its own identity provider. It supports OpenID Connect, OAuth 2.0 and SAML 2.0, SCIM v2 provisioning and passkeys, and it uses PostgreSQL with versions 14 through 18 supported. The core, Console and hosted login are AGPL-3.0 since v3.0, while APIs, SDKs and Helm charts remain Apache 2.0. Ask legal whether AGPL terms work for your deployment, and confirm how Firebase password hashes are handled, since ZITADEL uses just-in-time migration.

Choosing on license and lock-in

Supabase and Appwrite use permissive licenses, while ZITADEL's core is AGPL-3.0. If your legal team treats network-copyleft terms as a blocker for internal or customer-facing deployments, that alone can shape the shortlist. Check the license of every component you will ship, including any Helm charts and Terraform configurations, before you write migration code against an API.

Operating and patching the auth stack

Every option means your team owns upgrades, secrets, database backups and high availability. Supabase's Docker releases can include one-way database migrations that require a backup first, and ZITADEL recommends Kubernetes with the official Helm chart for high availability. Before choosing, ask who will apply security releases, how you will test an upgrade against a copy of your user table and what your recovery point objective for sign-in is.

How password hashes move without forcing resets

Firebase Authentication stores password hashes using a modified scrypt algorithm by default. The Firebase CLI can export user records along with the hash algorithm and its parameters, which is the material a receiving system needs to verify an existing password without asking the user to change it. Export is a privileged operation, so the account running it needs project-level access, and the export file itself contains credential material that must be stored and deleted under your own data handling rules.

  • Hash algorithm and parameters: Confirm that the export includes the signer key, salt separator, rounds and memory cost for the project, since these values are needed to verify any password later.
  • Users without passwords: Social sign-in and phone-only accounts carry no password hash, so they must be re-linked rather than migrated as credentials.
  • Export file handling: Restrict access to the export, encrypt it at rest and remove it after the import is verified.
  • Project parameters: Parameters are tied to the Firebase project, so record them with the export rather than relying on values recalled later.
  • Dry run: Import a sample of accounts into a staging environment and sign in with known test passwords before touching production data.

Before cutover, confirm the exported parameters against the project in the Firebase console and the Firebase CLI auth reference, and keep the export with the migration record.

Moving users, social logins and sessions off Firebase

This sequence moves user accounts, password hashes and social sign-in links from Firebase Authentication to the new identity service, with sessions handled through a parallel login window so users are not locked out at cutover.

  1. Inventory providers and user counts

    The application owner and the identity lead list every sign-in method enabled in the Firebase project: email and password, Google, Apple, other OAuth providers, phone, anonymous and any custom tokens. For each method they record the number of users, whether those users also have a password hash, and which client apps and backend services depend on Firebase ID tokens. Done means the team has a written table of methods, counts and dependent services, and has confirmed the list against the Firebase console rather than memory.

  2. Export users and password hashes

    An engineer with project owner or equivalent rights runs the Firebase CLI export for Auth users, which writes the user records and, for email and password accounts, the hashes together with the project's modified scrypt parameters. The export file is stored encrypted in a restricted location, and the team checks record counts against the inventory. Done means the export file exists, the counts match, and the parameters are saved alongside it, because the target cannot verify hashes without them.

  3. Import users into the target identity service

    The identity engineer loads the export into the target: Supabase Auth through its documented Firebase path, Appwrite through its Users API import with the Scrypt modified hash type, or ZITADEL through its Firebase migration guide or just-in-time approach. The team runs the import against a staging instance first and confirms the target version of the migration tooling in the current docs before using it. Done means a staging test login succeeds with an imported email and password account without a forced reset, and failed records are logged and explained.

  4. Re-link Google, Apple and other social providers

    The identity engineer configures each social provider in the target with its own client ID and redirect URI, then maps provider-specific identifiers to the imported accounts. Firebase user IDs do not carry over as provider subject IDs, so matching usually relies on verified email addresses and must be tested for accounts where the email changed or where a user signed in with more than one provider. Done means each provider completes a test sign-in that lands on the correct existing account, and unmatched or duplicate accounts are listed for a manual decision.

  5. Test OAuth sessions and provider identifiers

    The QA lead runs a scripted test matrix covering password logins, each social provider, password reset, email verification, token refresh and sign-out on web and mobile clients. The matrix also checks that any backend that validates Firebase ID tokens is either switched to the new issuer or temporarily accepts both. Done means every test case has a recorded result and an owner for each failure, and the team has confirmed which Firebase sessions remain valid after cutover.

  6. Plan the token and session cutover

    The platform lead agrees with the application owner when clients switch their SDK configuration to the new identity service, how long existing Firebase refresh tokens are honored, and how users who are signed in during the change are prompted to sign in again. Client release timing, mobile app store review and any custom token minting code are included in the plan. Done means a written runbook lists the switch steps, the rollback path and the named person who approves each step.

  7. Run the parallel login window

    For an agreed period, clients accept sign-ins from both Firebase and the new identity service, and the team monitors failed logins, duplicate account creation and password reset failures. New sign-ups go only to the target once the window opens, and support staff use a checklist for users who report being unable to sign in. Done means error rates are reviewed daily, the duplicate account list is resolved, and the owner signs off that Firebase Authentication can be disabled for sign-in.

  8. Retire Firebase Authentication and archive records

    Once the parallel window closes, the team disables Firebase sign-in in the clients, removes Firebase Admin SDK token checks from services, and keeps the encrypted user export and the migration logs under the organization's retention policy. The security lead confirms that secrets and service account keys used only for Auth are revoked. Done means no client or service still accepts Firebase ID tokens, and the archived export is documented for audit purposes.

Adding SAML and OIDC enterprise sign-in

Enterprise customers need SAML or OIDC federation when their own identity provider, such as Entra ID or Okta, must authenticate their staff into your application. Firebase Authentication offers federated providers for the common cases, but a regulated customer will usually ask for its own tenant, its own IdP, and its own offboarding through SCIM. The decision to make early is whether your product will be sold to organizations that each bring a different IdP, because that single fact determines whether you need a multi-tenant identity layer or a single realm with configuration per application. ZITADEL documents both SAML 2.0 and OIDC, along with federation to Entra ID, Okta and any OIDC-compliant provider.

ZITADEL's model fits this case directly. Its instances are virtual tenants with full data isolation, organizations inside an instance hold projects and users, and each customer organization can use a different identity provider. In practice this means one customer's Okta configuration and user store never mix with another customer's, which is the boundary a security reviewer will ask about first. Confirm with ZITADEL's organizations documentation how your chosen version handles per-organization IdP configuration, how administrators are delegated, and whether your audit requirements can be met from the logs it produces.

SCIM v2 adds automated provisioning and deprovisioning, so a user removed in the customer's directory loses access without a manual step in your system. ZITADEL provides a SCIM v2 service provider interface, documented in its SCIM v2 guide. Supabase Auth and Appwrite Auth focus on application sign-in, and you should verify in their current documentation whether either exposes SAML or SCIM for your deployment version before promising enterprise federation to a buyer. Whichever platform you choose, test the full path with a sandbox identity provider, including certificate rotation and a user who is disabled upstream.

Running the new auth layer beside Firestore, Storage and Functions

Most teams cannot move authentication, data and functions in one cutover, so the new auth layer has to coexist with Firebase for a while. The cards below cover the decisions that connect the two sides: what stays on Firebase, how tokens are verified, and where each piece of data ends up.

Choosing what stays on Firebase

Decide whether Firestore, Cloud Storage and Cloud Functions remain on Firebase during the transition or move with authentication. Keeping data on Firebase while users move means the app must accept identities from one system and write records that reference another. Map each collection and bucket to an owner, and list which user identifiers each one stores. Confirm the Firebase plan and billing terms that still apply to the services you keep running.

Re-issuing user identifiers

A user moved to the new auth layer usually receives a new user ID, so every Firestore document, storage path and function reference keyed to the Firebase UID needs a mapping table. Store the old and new IDs side by side during the transition. Plan the mapping before the first user migrates, because records written under one ID and read under another are difficult to repair later.

Verifying tokens in functions and APIs

Firebase Auth issues ID tokens that Cloud Functions and Firebase Admin SDK code verify against Google's keys. After the move, the API must accept tokens from the new issuer, which means changing the verification library, the issuer and audience checks, and the JWKS source. Supabase issues JWTs signed with keys you generate, and Zitadel publishes OIDC discovery metadata. Test expired, revoked and cross-issuer tokens before cutover.

Replacing Firebase security rules

Firestore and Storage security rules check request.auth against the Firebase identity. Those checks have no direct equivalent once data lives in Postgres or Appwrite collections, so every access rule must be rebuilt against the new token claims. Inventory each rule, write the equivalent policy, and test it with real user roles. Do not assume a rule that passes on Firebase is correct on the new platform.

Residency gain across one region

Firebase Authentication processes data only in the United States, while Firestore location is set separately and cannot be changed after provisioning. Supabase Cloud projects are hosted in one main region chosen from 17 AWS regions, so auth, database and files can share a region there. Self-hosting places all of them in the location you choose, including your own data center or an EU facility, which is the main reason to keep auth and data together.

Operating two identity systems

While both systems run, two sets of keys, sign-in flows, user lifecycle events and audit logs exist. Decide which system is authoritative for password resets, account deletion and MFA enrollment, and document it for support staff. Confirm who on your team owns each system, how disabled accounts are propagated, and when the Firebase Auth project can be retired after the last active user has moved.

What self-hosting auth means for operations

Self-hosting Firebase Authentication's replacement moves operational ownership of the sign-in path to your team, and that work recurs for as long as the system runs. Supabase self-hosting is documented as community-supported through GitHub Discussions, GitHub Issues, Discord and Reddit, with enterprises directed to contact Supabase's Growth Team for commercial support. Self-hosted Supabase also runs as a single project, so Studio does not manage multiple organizations or projects, and features such as managed backups, point-in-time recovery and the Management API are not available. Before choosing, confirm with the vendor which support tier, if any, covers the auth service and your deployment pattern.

Appwrite's official Helm chart runs its built-in PostgreSQL, Redis, ClickHouse and object storage as single replicas without replication or failover, and the chart documentation says production data should use managed services or operators. ZITADEL takes the opposite posture for high availability: it recommends a Kubernetes cluster with the official Helm chart and requires PostgreSQL, supporting versions 14 through 18. Whichever platform you pick, the database tier, not the auth application, usually determines your availability design, so plan replicas, failover and backup targets before go-live.

Four tasks recur on every platform. Upgrades mean pulling new Docker configuration or chart versions and recreating containers, and Supabase's self-hosted Docker release 0.8.3 flagged one-way Storage database migrations that require a database backup first. Secrets generation means replacing placeholder values before first start, using the scripts Supabase provides for the secrets and JWT key pair. Backups and restore tests cover the auth schema and user data together, since a restored database without matching signing keys will not validate existing sessions. Patching covers the auth services, the database and the reverse proxy, and the security fixes in each release set the pace. Ask any vendor or partner for a written schedule covering who runs each of these tasks and how often.

Questions buyers ask before replacing Firebase Authentication

What drives the cost of replacing Firebase Authentication?

The cost depends on the number of user accounts, how many sign-in methods you run, how many applications share the identity layer, and how much of the work is done by your own engineers. Costs split into one-time work (planning, user migration, re-linking social providers, client SDK changes, testing and cutover) and recurring work (hosting, backups, upgrades, monitoring and on-call). Self-hosted software itself carries no license fee for Supabase (Apache-2.0), Appwrite (BSD-3-Clause) or Zitadel's APIs and SDKs, but Zitadel's core is AGPL-3.0 since v3.0, so have legal review that license before deployment. Ask any provider for a quote that separates these components and states what is one-time and what recurs.

How long does a Firebase Authentication migration take?

Duration depends on the number of user accounts, the sign-in methods in use, whether hashes can be imported unchanged, and how many clients must be updated before cutover. No supplied figure sets a fixed duration, so ask for a timeline in the written scope. The work usually runs in phases: export and inventory, a staging import, client SDK changes, a parallel-run period, and cutover. Each phase should have an agreed exit condition. Timelines can also be affected by your release calendar and the availability of your security and compliance reviewers.

What does our team need to provide for the migration?

You will need a named technical owner, access to the Firebase project with rights to export users, administrators for the target environment, and the people who own each client application's sign-in code. Security or compliance staff should review data location, retention and access decisions. Ask the implementation partner to list these roles in the scope, along with the decisions your organization must make, such as which identity provider each customer uses and whether password resets are acceptable for any user group.

Can our own engineers migrate Firebase Authentication without a partner?

Yes, if your team has experience with OAuth and OIDC, database administration and secret handling. Supabase documents a Firebase migration path that includes importing Auth users with the project's scrypt parameters, and Appwrite's Migrations feature imports Firebase projects. Zitadel documents migration guides from Firebase using approaches such as just-in-time migration. The main risks in doing it yourself are incorrect hash parameters, lost social links, token and session mismatches, and an untested rollback. Consider a partner for a review of the plan or for high-risk parts of the cutover.

How does password hash compatibility affect the effort?

Compatibility determines whether users keep their passwords. Firebase Auth uses a modified scrypt algorithm by default, and the Firebase CLI exports hashes along with their parameters. Appwrite's Users API accepts imported Scrypt modified hashes, and Supabase's Auth import uses the project's scrypt parameters. When hashes import cleanly, users sign in unchanged. When they do not, expect forced password resets, support tickets and a longer rollout. Test a sample of exported accounts in staging before committing to a plan, and confirm the exact parameters the export produces for your project.

Do social logins like Google or Apple need to be re-linked?

Usually yes. Social providers identify users with provider-specific IDs, and each new identity platform must register its own OAuth client, redirect URIs and consent screens with Google, Apple, GitHub or others. Users who sign in with a social account may need to link their existing account again, depending on how the identity provider matches email addresses and provider IDs. Zitadel can federate login with Google, GitHub, GitLab, Apple, Entra ID and Okta, and each customer organization can use a different identity provider. Plan the redirect URI changes and a user-facing message before cutover.

What do SAML and OIDC add to the project scope?

SAML and OIDC federation add work for enterprise customers who want to sign in with their own identity provider. Zitadel implements OpenID Connect, OAuth 2.0 and SAML 2.0, supports SCIM v2 for user provisioning and deprovisioning, and organizes tenants as instances, organizations and projects. Scope should include metadata exchange, attribute and claim mapping, group or role mapping, test tenants for each customer, and certificate rotation. Ask for these items to be listed as separate deliverables, since each customer connection is repeated work.

How do DeployOpen's fixed-scope engagements and retainers apply here?

DeployOpen plans, implements, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside your own infrastructure. Most engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts, and DeployOpen does not publish a price list, so a quote follows from that written scope. Ongoing support, upgrades and continuous testing are available as retainers. DeployOpen prepares systems and evidence for compliance assessments but does not issue audit reports or certifications. Ask for the migration plan, the list of deliverables, the acceptance criteria and the handover documentation in the written scope.

How DeployOpen scopes and delivers an authentication replacement

DeployOpen plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For a Firebase Authentication replacement, that means agreeing in writing which identity platform fits your sign-in requirements, then delivering the user migration, provider setup and documentation as a fixed scope.

How we scope

  • Written scope lists which platform is in play: Supabase Auth, Appwrite Auth or ZITADEL, with the reasons stated.
  • Inventory covers Firebase sign-in methods, social providers, custom claims, and enterprise SAML or OIDC connections in use.
  • Scope records where users, hashes and sessions will live, so the EU or US data location question is answered before build.

How we build

  • Deploy the chosen platform in your infrastructure, with secrets generated and placeholder values removed before any user data arrives.
  • Test password hash import with a sample export, confirming that existing users sign in without a forced reset.
  • Reconnect social providers and configure SAML or OIDC federation, then test each customer organization's login path end to end.

How we hand over

  • Deliver runbooks for upgrades, secret rotation, backups and restore tests, written for your platform team.
  • Document the user migration steps, rollback plan and known gaps, such as social links or sessions that do not carry over.
  • Walk your engineers through the admin console, token settings and provider configuration, then close the scope in writing.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer, scoped separately from the migration.
  • Retainers can cover patching the chosen platform release by release, including security fixes, after your change review.
  • Ask any provider to confirm its support terms and maintenance commitments in writing before you choose a retainer level.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.