An open API service indexing awesome lists of open source software.

https://github.com/yezz123/authx

Ready-to-use and customizable Authentications and Oauth2 management for FastAPI ✨
https://github.com/yezz123/authx

authentification authorization backend fastapi jwt pydantic python starlette

Last synced: 28 days ago
JSON representation

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

Awesome Lists containing this project

README

          

# AuthX



AuthX


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

---

| Project | Status |
|---------|--------|
| CI | [![CI](https://github.com/yezz123/authx/actions/workflows/ci.yml/badge.svg)](https://github.com/yezz123/authx/actions/workflows/ci.yml) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/yezz123/authx/main.svg)](https://results.pre-commit.ci/latest/github/yezz123/authx/main) [![Codecov](https://codecov.io/gh/yezz123/authx/branch/main/graph/badge.svg)](https://codecov.io/gh/yezz123/authx) |
| Meta | [![Package version](https://img.shields.io/pypi/v/authx?color=%2334D058&label=pypi%20package)](https://pypi.org/project/authx) [![Downloads](https://static.pepy.tech/badge/authx)](https://pepy.tech/project/authx) [![Pydantic Version 2](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pydantic/pydantic/main/docs/badge/v2.json)](https://pydantic.dev) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=yezz123_authx&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=yezz123_authx) |

---

**Source Code**:

**Documentation**:

---

Add a fully featured authentication and authorization system to your [FastAPI](https://fastapi.tiangolo.com/) project. **AuthX** is designed to be simple, customizable, and secure.

## Installation

```bash
pip install authx
```

## Quick Start

```python
from fastapi import FastAPI, Depends, HTTPException
from authx import AuthX, AuthXConfig

app = FastAPI()

config = AuthXConfig(
JWT_SECRET_KEY="your-secret-key", # Change this!
JWT_TOKEN_LOCATION=["headers"],
)

auth = AuthX(config=config)
auth.handle_errors(app)

@app.post("/login")
def login(username: str, password: str):
if username == "test" and password == "test":
token = auth.create_access_token(uid=username)
return {"access_token": token}
raise HTTPException(401, detail="Invalid credentials")

@app.get("/protected", dependencies=[Depends(auth.access_token_required)])
def protected():
return {"message": "Hello World"}
```

**Test it:**

```bash
# Get a token
curl -X POST "http://localhost:8000/login?username=test&password=test"

# Access protected route
curl -H "Authorization: Bearer " http://localhost:8000/protected
```

## Features

- Support for Python 3.9+ and Pydantic 2
- JWT authentication with multiple token locations:
- Headers (Bearer token)
- Cookies (with CSRF protection)
- Query parameters
- JSON body
- Access and refresh token support
- Token freshness for sensitive operations
- Token blocklist/revocation
- Extensible error handling

### Extra Features

Install [`authx-extra`](https://github.com/yezz123/authx-extra) for additional features:

```bash
pip install authx-extra
```

- Redis session store and cache
- HTTP caching
- Performance profiling with pyinstrument
- Prometheus metrics

**Note:** Check [Release Notes](https://authx.yezz.me/release/).

## Contributors and Sponsors

[![All Contributors](https://img.shields.io/badge/all_contributors-16-orange.svg?style=flat-square)](#contributors-)

Thanks goes to these wonderful people
([emoji key](https://allcontributors.org/docs/en/emoji-key)):



Yasser Tahiri
Yasser Tahiri

πŸ’» πŸ“– 🚧 πŸš‡
Abderrahim SOUBAI-ELIDRISI
Abderrahim SOUBAI-ELIDRISI

πŸ‘€ πŸ“–
Ismail Ghallou
Ismail Ghallou

πŸ’» πŸ›‘οΈ
MojixCoder
MojixCoder

πŸ’» πŸ›
StΓ©phane Raimbault
StΓ©phane Raimbault

πŸ’» πŸ”Œ
theoohoho
theoohoho

πŸ“–
Yogesh Upadhyay
Yogesh Upadhyay

πŸ›


Roman
Roman

πŸ›
Alvaro Lopez Ortega
Alvaro Lopez Ortega

πŸ“–
Devy Santo
Devy Santo

πŸš‡
pg365
pg365

πŸš‡
Jorrit
Jorrit

πŸ“¦
Callam
Callam

πŸ’»
Maxim
Maxim

πŸ’»


Suyog Shimpi
Suyog Shimpi

πŸ’»
NeViNez
NeViNez

πŸ›

This project follows the
[all-contributors](https://github.com/all-contributors/all-contributors)
specification. Contributions of any kind welcome!

## License

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