12 releases (breaking)
Uses new Rust 2024
| 0.10.0 | Apr 12, 2026 |
|---|---|
| 0.9.0 | Mar 11, 2026 |
| 0.8.0 | Feb 27, 2026 |
#2099 in Authentication
342 downloads per month
Used in 2 crates
(via better-auth)
1MB
24K
SLoC
Better Auth RS
The most comprehensive authentication framework for Rust. Inspired by Better Auth.
Note
v1 (v1 branch, alpha): complete rewrite with app-owned schema and full compatibility with better-auth@1.4.19.
Features
- Plugin Architecture — compose only the auth features you need
- Type Safety — leverages Rust's type system for compile-time guarantees
- Async First — built on Tokio with full async/await support
- Database Agnostic — in-memory for development, PostgreSQL for production
- Framework Integration — first-class Axum support with session extractors
- OpenAPI — auto-generated API specification
- Middleware — CSRF, CORS, rate limiting, body size limits
- Database Hooks — intercept create/update/delete operations
Quick Start
[dependencies]
better-auth = "0.8"
use better_auth::{BetterAuth, AuthConfig};
use better_auth::plugins::EmailPasswordPlugin;
use better_auth::adapters::MemoryDatabaseAdapter;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let auth = BetterAuth::new(
AuthConfig::new("your-very-secure-secret-key-at-least-32-chars-long")
.base_url("http://localhost:3000"),
)
.database(MemoryDatabaseAdapter::new())
.plugin(EmailPasswordPlugin::new().enable_signup(true))
.build()
.await?;
// Mount as an Axum router (requires `axum` feature)
// let app = auth.axum_router();
Ok(())
}
See the Quick Start guide for a complete walkthrough including sign-up, sign-in, and session usage.
Plugins
Better Auth RS ships with a rich set of plugins. Enable only what you need:
| Plugin | Description |
|---|---|
| Email/Password | Sign up/sign in with email & password, username support |
| Session Management | Session listing, revocation, and token refresh |
| Password Management | Password reset, change, and set flows |
| Email Verification | Email verification workflows |
| Account Management | Account linking and unlinking |
| OAuth | Social sign-in via OAuth 2.0 providers |
| Two-Factor | TOTP-based 2FA with backup codes |
| Organization | Multi-tenant organizations with RBAC |
| Admin | User management and administrative operations |
| API Key | API key generation, rotation, and revocation |
| Passkey | WebAuthn passkey authentication |
| Device Authorization | Device flow for TVs, consoles, CLIs, and other input-constrained clients |
See the Plugins documentation for usage details.
Feature Flags
| Feature | Description |
|---|---|
axum |
Axum web framework integration |
derive |
Derive macros for custom entity types (AuthUser, MemoryUser, etc.) |
sqlx-postgres |
PostgreSQL database support via SQLx |
Crate Structure
| Crate | Description |
|---|---|
better-auth |
Main crate — re-exports and framework integration |
better-auth-core |
Core abstractions: traits, config, middleware, error handling |
better-auth-api |
Plugin implementations |
better-auth-derive |
Derive macros for custom entity types |
Documentation
Detailed guides and API reference are available in the docs/ directory:
- Installation
- Quick Start
- Authentication — Email/Password · Sessions · Email Verification
- Concepts — Configuration · Database · Plugins · Middleware · Hooks
- Plugins — OAuth · Two-Factor · Organization · Admin · API Key · Passkey · Device Authorization
- Reference — API Routes · Configuration Options · Errors · Security · OpenAPI
- Integrations — Axum
Examples
# Basic usage (in-memory)
cargo run --example basic_usage
# Axum web server
cargo run --example axum_server --features axum
# PostgreSQL
cargo run --example postgres_usage --features sqlx-postgres
# Custom entity types with derive macros
cargo run --example custom_entities --features derive
# Custom ORM adapter
cargo run --example custom_orm_adapter
# Full-stack (better-auth frontend + better-auth-rs backend)
cargo run --manifest-path examples/fullstack/backend/Cargo.toml
See examples/README.md for detailed documentation on each example.
License
Licensed under either of:
at your option.
Dependencies
~21–43MB
~589K SLoC