Repolode
supabase

supabase/auth

A Go-based authentication and user management server that issues JWTs, powering Supabase Auth.

Open-source alternative to:Auth0Firebase Authentication

Stars
2,593
Forks
802
Open issues
399
Last commit
16 hours ago

What is it?

Auth is a user management and authentication server written in Go. It handles user sign-up and sign-in, issues JWT access and refresh tokens, and provides the identity layer that Supabase uses for features such as Row Level Security with PostgREST. Supported sign-in methods include email and password, magic links, phone number OTP, and external OAuth providers such as Google, Apple, GitHub, and Discord.

The server is configured through environment variables prefixed with GOTRUE_ and runs against PostgreSQL, with migrations applied automatically on startup. It includes admin endpoints for managing users and generating action links, email templates for confirmation, recovery and invites, optional CAPTCHA checks, refresh token rotation with reuse detection, and OpenTelemetry tracing and metrics. The project is a fork of Netlify's GoTrue codebase and has diverged from it in features.

The project is intended to run as a service rather than a Go library, and the maintainers recommend running it behind a TLS-capable proxy and not modifying the schema it manages.

Key features

  • 01Issues JWT access and refresh tokens, with refresh token rotation and reuse detection
  • 02Supports email/password, magic link, phone OTP, and anonymous sign-in
  • 03Integrates with many OAuth providers including Google, Apple, GitHub, and Discord
  • 04Includes admin APIs for creating, updating, and banning users and generating action links
  • 05Sends customizable email templates for confirmation, recovery, invites, and notifications
  • 06Exports OpenTelemetry traces and Prometheus or OpenTelemetry metrics

Use cases

  • Adding user accounts and social login to a Supabase project or a self-hosted Supabase stack
  • Issuing JWTs that a PostgreSQL-backed API uses for row-level access control
  • Running a self-hosted authentication service with email, phone, and OAuth sign-in

Quick start

  1. 1

    Start the local Postgres database in a container

    docker-compose -f docker-compose-dev.yml up postgres
  2. 2

    Build the auth binary

    make build
  3. 3

    Run the auth binary

    ./auth

Things to know

  • Running it in production requires a process to promptly apply security updates, and the README recommends using hosted Supabase Auth instead.
  • Not meant to be used as a Go library, and Go API compatibility is not guaranteed.
  • Some inherited Netlify features such as multi-tenancy and super admin may be removed without notice.

In collections

Topics

FAQ

What is auth?
A Go-based authentication and user management server that issues JWTs, powering Supabase Auth. Auth is a user management and authentication server written in Go. It handles user sign-up and sign-in, issues JWT access and refresh tokens, and provides the identity layer that Supabase uses for features such as Row Level Security with PostgREST. Supported sign-in methods include email and password, magic links, phone number OTP, and external OAuth providers such as Google, Apple, GitHub, and Discord.
Is auth free to use? What license does it have?
auth is open source under the MIT license. Check the license terms before using it in commercial products.
Is auth still maintained?
Actively maintained. The last commit to auth was on Nov 5, 2026.
What can I use auth for?
Adding user accounts and social login to a Supabase project or a self-hosted Supabase stack Issuing JWTs that a PostgreSQL-backed API uses for row-level access control Running a self-hosted authentication service with email, phone, and OAuth sign-in
How do I install auth?
Start the local Postgres database in a container: docker-compose -f docker-compose-dev.yml up postgres Build the auth binary: make build Run the auth binary: ./auth
Where can I get auth?
The source code and installation instructions are on GitHub: https://github.com/supabase/auth

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects