Skip to main content

Comprehensive authentication and authorization library for Python

Project description

authfort

Complete authentication and authorization library for Python.

Install

pip install authfort[fastapi]
# or with SQLite: pip install authfort[sqlite,fastapi]

Quick Start

from authfort import AuthFort, CookieConfig
from fastapi import FastAPI, Depends

auth = AuthFort(
    database_url="postgresql+asyncpg://user:pass@localhost/mydb",
    cookie=CookieConfig(),
)

app = FastAPI()
app.include_router(auth.fastapi_router(), prefix="/auth")
app.include_router(auth.jwks_router())

@app.get("/profile")
async def profile(user=Depends(auth.current_user)):
    return {"email": user.email, "roles": user.roles}

Endpoints

Method Path Description
POST /auth/signup Create account
POST /auth/login Sign in
POST /auth/refresh Refresh access token
POST /auth/logout Sign out
GET /auth/me Get current user
GET /auth/oauth/{provider}/authorize Start OAuth flow
GET /auth/oauth/{provider}/callback OAuth callback
POST /auth/introspect Token introspection
GET /.well-known/jwks.json Public signing keys

Features

  • Email/password auth with argon2 hashing
  • JWT RS256 with automatic key management
  • Refresh token rotation with theft detection
  • OAuth 2.1 with PKCE (Google, GitHub)
  • Role-based access control
  • Session management (list, revoke)
  • Ban/unban users
  • Event hooks
  • JWKS + key rotation
  • Cookie and bearer token modes
  • Multi-database: PostgreSQL (default), SQLite, MySQL

OAuth

from authfort import AuthFort, GoogleProvider, GitHubProvider

auth = AuthFort(
    database_url="...",
    providers=[
        GoogleProvider(client_id="...", client_secret="..."),
        GitHubProvider(client_id="...", client_secret="..."),
    ],
)

Programmatic API

# Create users without the HTTP endpoint
result = await auth.create_user("admin@example.com", "password", name="Admin")

# Roles
await auth.add_role(user_id, "admin")
await auth.remove_role(user_id, "editor")

# Sessions
sessions = await auth.get_sessions(user_id, active_only=True)
await auth.revoke_session(session_id)

# Ban/unban
await auth.ban_user(user_id)
await auth.unban_user(user_id)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

authfort-0.0.3.tar.gz (41.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

authfort-0.0.3-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

Details for the file authfort-0.0.3.tar.gz.

File metadata

  • Download URL: authfort-0.0.3.tar.gz
  • Upload date:
  • Size: 41.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for authfort-0.0.3.tar.gz
Algorithm Hash digest
SHA256 f552fc66dfb60a3e1c4c1251da35b0da318373c929d1ac854d5013977c89ca01
MD5 74054db107949b959a884b5eeec19d10
BLAKE2b-256 a1a9bab66977b90be33c4c81912dced31e14e7b4f0a237405eb0a4a22e9104f8

See more details on using hashes here.

File details

Details for the file authfort-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: authfort-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 42.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for authfort-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 049addb2ed9958fc65887df52a0aeecade6b75a1c72b41ef910454bdaa5f2694
MD5 480e74bdd9553f6ca111e1ae8ff690d1
BLAKE2b-256 ea9d5c5956f742734f18473bbc74dacd35127799b757ae34f361c7bd40fbf5eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page