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
- Password reset (programmatic — you control delivery)
- Change password (with old password verification)
- Session management (list, revoke, revoke all except current)
- Ban/unban users
- Event hooks (15 event types)
- 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")
# Password reset (you handle delivery — email, SMS, etc.)
token = await auth.create_password_reset_token("user@example.com")
if token:
send_email(email, f"https://myapp.com/reset?token={token}")
await auth.reset_password(token, "new_password")
# Change password (authenticated)
await auth.change_password(user_id, "old_password", "new_password")
# Sessions
sessions = await auth.get_sessions(user_id, active_only=True)
await auth.revoke_session(session_id)
await auth.revoke_all_sessions(user_id, exclude=user.session_id) # keep current
# Ban/unban
await auth.ban_user(user_id)
await auth.unban_user(user_id)
License
Project details
Release history Release notifications | RSS feed
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.5.tar.gz
(45.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
authfort-0.0.5-py3-none-any.whl
(44.7 kB
view details)
File details
Details for the file authfort-0.0.5.tar.gz.
File metadata
- Download URL: authfort-0.0.5.tar.gz
- Upload date:
- Size: 45.2 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc991ca3eaa1a0a8408ffa9705021424589f7946ad1712afd373756e8f1584dd
|
|
| MD5 |
0631ee02e53535c655c6d164e4eb0b08
|
|
| BLAKE2b-256 |
862db53dda6d205d123858ea71b85cd667c2d430df4147a114c1b527da7df9ee
|
File details
Details for the file authfort-0.0.5-py3-none-any.whl.
File metadata
- Download URL: authfort-0.0.5-py3-none-any.whl
- Upload date:
- Size: 44.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7bb3e94a46e2c4cbe05642e3e18ba71be7a2b40d662b748b800d4f31ac56b4c
|
|
| MD5 |
d67d5934d6db6985e7840842c659d436
|
|
| BLAKE2b-256 |
c13c0bbabca282c3d2e3c038c37b654f6d8a18a53dfbaacfa7e53cae8bcfbfa3
|