Skip to main content

py-auth-fastapi

FastAPI integration for py-auth-core.

PyAuthFastAPI is an APIRouter. You pass it a configured PyAuth instance; it registers the HTTP routes, sets and clears cookies, and turns py-auth errors into FastAPI HTTPExceptions. It does not talk to the database — that stays on your adapter.

Requires Python 3.10+.

Install

pip install py-auth-fastapi

You also need py-auth-core and a storage adapter such as py-auth-sqlalchemy.

Quick start

from fastapi import FastAPI, Depends
from py_auth import PyAuth
from py_auth_fastapi import PyAuthFastAPI

auth = PyAuth(adapter=adapter, providers=[...])

app = FastAPI()
auth_router = PyAuthFastAPI(auth)
app.include_router(auth_router)

@app.get("/protected")
async def protected(session=Depends(auth_router.get_current_session())):
    return {"user_id": session["user_id"]}

Defaults: prefix /auth, tags ["Authentication"]. Extra keyword arguments are forwarded to APIRouter. Cookie names and flags come from auth.cookies (configured on PyAuth, not here).

PyAuthFastAPI(auth, prefix="/api/auth", tags=["Auth"])

Routes

Method Path CSRF What it does
GET /auth/csrf No Returns a CSRF token. Sets the CSRF cookie if it is missing.
POST /auth/signin/credentials Yes JSON body → signin_with_credentials. Sets the session cookie.
POST /auth/signout Yes Deletes the session, then clears session and CSRF cookies.
GET /auth/session No Returns id, user_id, and expires for the current session.
GET /auth/signin/google No Redirects to Google. Stores state, PKCE verifier, and nonce in cookies. Requires GoogleProvider.
GET /auth/google/callback No Finishes Google sign-in, clears OAuth cookies, sets the session cookie.

Mutating routes that require CSRF compare the CSRF cookie with the x-csrf-token header (double-submit). Fetch GET /auth/csrf first, then send the same value in that header.

On failure, the response looks like:

{
  "detail": {
    "success": false,
    "message": "...",
    "error": { "status_code": 401, "code": "InvalidSession", "details": {} }
  }
}

Protecting your own routes

get_current_session() is a FastAPI dependency factory. It reads the session cookie, calls verify_session, and injects the session dict (id, user_id, expires, …). Invalid or missing sessions become HTTP errors.

Use add_csrf_verification=True on endpoints that change state:

@app.post("/profile")
async def update_profile(
    session=Depends(auth_router.get_current_session(add_csrf_verification=True)),
):
    ...

verify_csrf() is available on its own if you only need the CSRF check.

License

MIT

Metadata

Release files for py-auth-fastapi 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-auth-fastapi 0.0.2
File Size Uploaded
py_auth_fastapi-0.0.2.tar.gz 7.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-auth-fastapi 0.0.2
File Interpreter ABI Platform
py_auth_fastapi-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 14.2 kB

Release files / py_auth_fastapi-0.0.2.tar.gz

Download URL py_auth_fastapi-0.0.2.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c93a2949bd61d9b4d46156c288ea6431f0b841a69b9eb92b658d2a272ffdae86
BLAKE2b-256 checksum
How to use checksums
2ca828c922e9c7e19f7a4c5c694967640bfa9742036233c5b48f4c729ba62773
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / py_auth_fastapi-0.0.2-py3-none-any.whl

Download URL py_auth_fastapi-0.0.2-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8a2749e3b54b91874f74b2ac8f92fba4d8fa28cf3c99b5bb25b669196ecf6129
BLAKE2b-256 checksum
How to use checksums
d4088497c807ebfcc3e2257200cf2f39af88ad97cbefd38523bc331f37cc4be8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page