Ecosyste.ms: Awesome
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: 1 day ago
JSON representation
Ready-to-use and customizable Authentications and Oauth2 management for FastAPI β¨
- Host: GitHub
- URL: https://github.com/yezz123/authx
- Owner: yezz123
- License: mit
- Created: 2021-08-23T16:18:04.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T13:44:04.000Z (about 1 month ago)
- Last Synced: 2024-10-29T15:19:37.862Z (about 1 month ago)
- Topics: authentification, authorization, backend, fastapi, jwt, pydantic, python, starlette
- Language: Python
- Homepage: https://authx.yezz.me/
- Size: 2.83 MB
- Stars: 809
- Watchers: 16
- Forks: 49
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: .github/SECURITY.md
Awesome Lists containing this project
- awesome-morocco - AuthX - A customizable Authentications and Oauth2 management for FastAPI by [@yezz123](https://github.com/yezz123) (Uncategorized / Uncategorized)
README
# 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 registration and authentication or authorization system to your
[FastAPI](https://fastapi.tiangolo.com/) project. **AuthX** is designed to be as
customizable and adaptable as possible.## Features
- [x] Support Python 3.8+ & Pydantic 1.7+.
- [x] Multiple customizable authentication backend:
- [x] JWT authentication backend included
- [x] JWT encoding/decoding for application authentication
- [x] Automatic detection of JWTs in requests:
- [x] JWTs in headers
- [x] JWTs in cookies
- [x] JWTs in query parameters
- [x] JWTs in request bodies
- [x] Cookie authentication backend included
- [x] Middleware for authentication and authorization through JWT.
- [x] Extensible Error Handling System.### Extra Features
AuthX is designed to be as customizable and adaptable as possible.
So you need to install [`authx-extra`](https://github.com/yezz123/authx-extra) to get extra features.
- [x] Using Redis as a session store & cache.
- [x] Support HTTPCache.
- [x] Support Sessions and Pre-built CRUD functions and Instance to launch Redis.
- [x] Support Middleware of [pyinstrument](https://pyinstrument.readthedocs.io/) to check your service performance.
- [x] Support Middleware for collecting and exposing [Prometheus](https://prometheus.io/) metrics.**Note:** Check [Release Notes](https://authx.yezz.me/release/).
## Project using
Here is a simple way to kickstart your project with AuthX:
```python
from fastapi import FastAPI, Depends, HTTPException
from authx import AuthX, AuthXConfig, RequestTokenapp = FastAPI()
config = AuthXConfig(
JWT_ALGORITHM = "HS256",
JWT_SECRET_KEY = "SECRET_KEY",
JWT_TOKEN_LOCATION = ["headers"],
)auth = AuthX(config=config)
auth.handle_errors(app)@app.get('/login')
def login(username: str, password: str):
if username == "xyz" and password == "xyz":
token = auth.create_access_token(uid=username)
return {"access_token": token}
raise HTTPException(401, detail={"message": "Invalid credentials"})@app.get("/protected", dependencies=[Depends(auth.get_token_from_request)])
def get_protected(token: RequestToken = Depends()):
try:
auth.verify_token(token=token)
return {"message": "Hello world !"}
except Exception as e:
raise HTTPException(401, detail={"message": str(e)}) from e
```## Contributors and sponsors
[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors-)
Thanks goes to these wonderful people
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
Yasser Tahiri
π» π π§ π
Abderrahim SOUBAI-ELIDRISI
π π
Ismail Ghallou
π» π‘οΈ
MojixCoder
π» π
StΓ©phane Raimbault
π» π
theoohoho
π
Yogesh Upadhyay
π
Roman
π
Alvaro Lopez Ortega
π
Devy Santo
π
pg365
π
Jorrit
π¦
Callam
π»
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.