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
  • Authorization: Bearer tokens 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[postgres]

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.2.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.2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cacl-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 eb64fc99d97675295c248c8f9860e58ee34b3ce4272c73c883f47fab19b299dc
MD5 4c6b04326f7de9dbbed67e9ed181f6aa
BLAKE2b-256 63015e3f240840d308b06b581dc1910d1d87945b5251f7a21c1527bcc2ee44ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacl-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: cacl-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f13330a3cfbd1cbed76a2a02f102d210c888851accc5644d3586726550df359f
MD5 c15d51e734f3edd3e2c8400377818ce6
BLAKE2b-256 22966dd13a32589b8d83bfb332ef242e9aa459cbdf2b624ef7826d8081c93814

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacl-0.1.2-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