Skip to main content

Stop fighting auth in FastAPI: JWT access/refresh, DB-backed blacklist & rotation, cookie or Bearer modes.

Project description

CACL logo

CACL — Clear Authentication Control Library

Stop fighting authentication in FastAPI.
Controlled JWT auth with database-backed tokens, blacklist, and rotation.


What is CACL?

CACL is a production-grade authentication library for FastAPI.

It provides explicit, database-backed control over JWT authentication:

  • access & refresh tokens
  • forced token invalidation (blacklist)
  • refresh token rotation
  • cookie or Bearer header modes — switched by a single flag

No hidden state.
No opinionated framework behavior.
No surprises in production.

You own the database and transactions — CACL handles token mechanics.


Cookie or Bearer — without the headache

CACL supports both browser and API authentication flows:

  • Cookie-based auth for web applications
  • Bearer tokens via Authorization header for APIs and services

Switching between them requires changing a single configuration flag.

No duplicated logic.
No conditional dependencies in routes.
No separate auth implementations to maintain.


Why CACL exists

Most JWT libraries treat tokens as stateless forever.

That approach breaks down the moment you need:

  • real logout
  • forced session invalidation
  • compromised token handling
  • refresh token reuse protection

CACL treats tokens as controlled entities stored in your database.

This allows you to:

  • revoke tokens instantly
  • track token lifecycle
  • enforce refresh rotation
  • audit authentication behavior

This is how authentication works in real production systems.


Authentication philosophy

CACL follows a simple principle:

Authentication must be explicit, inspectable, and revocable.

Stateless JWTs optimize for simplicity, not for control.
CACL optimizes for operational clarity.

The library intentionally:

  • does not create database engines
  • does not manage transactions
  • does not hide side effects

Your application owns the session lifecycle.
CACL integrates into it — cleanly and predictably.


Core principles

  • Library, not framework — no imposed app structure
  • Database-backed — tokens are real records
  • Explicit ownership — you control commits and rollbacks
  • FastAPI-native — async, dependencies, SQLAlchemy 2.x

Installation

pip install cacl

Minimal mental model

Your application:

  • creates DB engine
  • manages transactions
  • verifies user credentials

CACL:

  • creates JWT tokens
  • verifies JWT tokens
  • blacklists tokens
  • enforces authentication rules

Documentation & demo

  • Library documentation: cacl/
  • Demo FastAPI application: app/
  • Design notes, testing, and verification docs are included in the repository

When should you use CACL?

Use CACL if you need:

  • real logout (not "just delete the cookie")
  • forced token invalidation
  • refresh token rotation without hacks
  • clear and auditable auth boundaries

If you want "just slap JWT and forget about it" — this library is intentionally not for you.

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

cacl-0.1.4.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

cacl-0.1.4-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file cacl-0.1.4.tar.gz.

File metadata

  • Download URL: cacl-0.1.4.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cacl-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d6c0fbb595e819d3b2e341187dc27e920938012245917395f89b47fbd636f099
MD5 5a23a8b726fee090372345e096136564
BLAKE2b-256 24679f88989041116f9906cabba75bd748b89ad4eda888a06353e46e8b6ac24e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacl-0.1.4.tar.gz:

Publisher: publish.yml on CACL-project/CACL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cacl-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: cacl-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cacl-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f594e7ba14dd43be2b018af8ebcdfeb80deb08cc7a96dffd0e66748d02a30e39
MD5 7a277de5bebb8cf01fe2a8702a1f3b40
BLAKE2b-256 76e4d8c4f4d3996a16ee79c40d5b2a417896e7cae7009c82dba6717129489951

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacl-0.1.4-py3-none-any.whl:

Publisher: publish.yml on CACL-project/CACL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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