Skip to main content

Ready to use and customizable Authentications and Oauth2 management for FastAPI

Project description

AuthenticationX 💫


Ready-to-use and customizable Authentications and Oauth2 management for FastAPI ⚡

Test Build Docs Pypi codecov Downloads framework

Source Code:


Add a Fully registration and authentication or authorization system to your FastAPI project. AuthX is designed to be as customizable and adaptable as possible.

Features 🔧

  • Support Python 3.8+.
  • Extensible base user model.
  • Ready-to-use register, login, reset password and verify e-mail routes.
  • Ready-to-use Social login and Oauth2 routes.
    • Full Configuration and customization.
    • Ready-to-use social OAuth2 login flow.
  • Middleware Support for Oauth2 using Authlib and Starlette.
  • Dependency callable to inject current user in route.
  • Pluggable password validation
    • Using Captcha Service.
    • Implements the HMAC algorithm And Hashlib library.
  • Using Email Service. (SMTP)
  • Extensible Error Handling
  • High level API to manage users, roles and permissions
  • Using Redis as a session store & cache.
  • Support HTTPCache.
  • Customizable database backend:
  • Multiple customizable authentication backend:
    • JWT authentication backend included
    • Cookie authentication backend included
  • Full OpenAPI schema support, even with several authentication backend.
  • Provide a Docstring for each class and function.
  • Support Sessions and Pre-built CRUD functions and Instance to launch Redis.

Note: Check Release Notes.

Note: Check Examples.

Project using 🚀

from fastapi import APIRouter, Depends, FastAPI
from authx import Authentication, User, BaseDBBackend, RedisBackend

app = FastAPI()
auth = Authentication(database_backend=BaseDBBackend())
router = APIRouter()

# Set up Pre-configured Routes
app.include_router(auth.auth_router, prefix="/api/users")
app.include_router(auth.social_router, prefix="/auth")
app.include_router(auth.password_router, prefix="/api/users")
app.include_router(auth.admin_router, prefix="/api/users")
app.include_router(auth.search_router, prefix="/api/users")

# Set Redis Cache

# Set Anonymous User
def anonym_test(user: User = Depends(auth.get_user)):

# Set Authenticated User
def user_test(user: User = Depends(auth.get_authenticated_user)):

# Set Admin User
@router.get("/admin", dependencies=[Depends(auth.admin_required)])
def admin_test():

Development 🚧

Setup environment 📦

You should create a virtual environment and activate it:

python -m venv venv/
source venv/bin/activate

And then install the development dependencies:

pip install -r

Run tests 🌝

I use Pytest to run the tests, you can run this by using a shortcut command in the Makefile:

make test

Format the code 🍂

Execute the following command to apply pre-commit formatting:

make lint

Contributors and sponsors ✨☕️

All Contributors

Thanks goes to these wonderful people (emoji key):

Yasser Tahiri

💻 📖 🚧 🚇


👀 📖

Ismail Ghallou

💻 🛡️

talentuno LLC


Cactus LLC



💻 🐛

Stéphane Raimbault

💻 🔌



This project follows the all-contributors specification. Contributions of any kind welcome!

License 📝

This project is licensed under the terms of the MIT License.

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

authx-0.4.0.tar.gz (190.1 kB view hashes)

Uploaded source

Built Distribution

authx-0.4.0-py3-none-any.whl (48.5 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page