Skip to main content

Pluggable JWT authentication — authenticators, key providers, and FastAPI dependency factories

Project description

csrd-auth

Pluggable JWT authentication for FastAPI — authenticators, key providers, and dependency factories.

Tier 1.5 — depends on csrd-models and csrd-context only.

Installation

pip install "csrd-auth @ git+https://github.com/csrd-api/fastapi-common.git#subdirectory=packages/auth"

Usage

from csrd.auth import (
    JWTAuthenticator,
    StaticKeyProvider,
    create_bearer_dependency,
    create_jwt_bearer,
)

Quick start — JWT bearer dependency

# Standalone (provide your own token_finder)
from csrd.auth import create_jwt_bearer

auth_dep = create_jwt_bearer(
    key="your-secret",
    token_finder=lambda: extract_token_from_request(),
)

When used with csrd.versioning, wire in find_token explicitly:

from csrd.auth import create_jwt_bearer
from csrd.versioning import find_token

auth_dep = create_jwt_bearer(key="your-secret", token_finder=find_token)

Authenticators

Class Strategy
JWTAuthenticator Decode & verify JWT locally via PyJWT
StaticAuthenticator Accept a fixed token (dev/testing)
RemoteAuthenticator Validate via upstream HTTP endpoint
CallbackAuthenticator Delegate to any sync/async callable
ChainedAuthenticator Try multiple authenticators in order

Key Providers

Class Strategy
StaticKeyProvider Fixed string, bytes, or SecretStr
EnvKeyProvider Read from app.state or settings loader
JWKSKeyProvider Fetch from JWKS endpoint (cached with TTL)
MultiKeyProvider Route by kid header or try all
CallbackKeyProvider Delegate to any callable

Protocols

  • Authenticator(Request, str) -> UserClaims
  • KeyProvider(token_headers, app) -> key

Both are @runtime_checkable protocols.

Dependency Tier

Tier 1    csrd.models · csrd.lifespan · csrd.context
Tier 1.5  csrd.auth · csrd.logging
Tier 2    csrd.delegate · csrd.repository · csrd.service
Tier 3    csrd.versioning

csrd.auth depends only on csrd.models (for UserClaims) and csrd.context (for user_info_context). It has no dependency on csrd.versioning.

Project details


Release history Release notifications | RSS feed

This version

0.3.5

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csrd_auth-0.3.5.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

csrd_auth-0.3.5-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file csrd_auth-0.3.5.tar.gz.

File metadata

  • Download URL: csrd_auth-0.3.5.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for csrd_auth-0.3.5.tar.gz
Algorithm Hash digest
SHA256 e15cadfbcef5bb3aa63ded49a1711e2d23d75e0724adcbd8c72726bac922320d
MD5 e7ad30732ea6205f6f688c2c116bb2bb
BLAKE2b-256 828495b326c4dc37e85f4f95b36495628309fec60c6f7ee8ab5dce404e26ecee

See more details on using hashes here.

Provenance

The following attestation bundles were made for csrd_auth-0.3.5.tar.gz:

Publisher: release.yml on csrd-api/fastapi-common

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

File details

Details for the file csrd_auth-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: csrd_auth-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for csrd_auth-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f043a0b292e83f7518d15561e069a3f38c249d06d2731e02135485cc8f23379f
MD5 46c1d81c8bb0ffc5d858740894150c4e
BLAKE2b-256 d9c772a55618f472ef2e62d29f07d366c02fb4d0114a9a7b42b4aba745ca8bc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for csrd_auth-0.3.5-py3-none-any.whl:

Publisher: release.yml on csrd-api/fastapi-common

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