Skip to main content

A minimal FastAPI service for creating, verifying, and revoking user-scoped API tokens. Uses Argon2 hashing and PostgreSQL for secure token management.

Project description

TokenKeeper API

TokenKeeper is a secure, FastAPI-based service for managing and verifying personal access tokens. It integrates with AWS Cognito for user authentication and uses PostgreSQL for persistent storage. Tokens are hashed with Argon2 and optionally support expiration, revocation, and last-used tracking.

Features

  • 🔐 Secure token generation using Argon2 hashing
  • 📅 Optional token expiration and usage tracking
  • ✅ Verification and revocation of tokens
  • 🧾 List non-revoked, non-expired tokens
  • 🪪 Cognito-based user authentication
  • 🗃️ PostgreSQL + SQLAlchemy (async) backend

API Endpoints

  • POST /token — Create a new token
  • POST /token/verify — Verify token validity
  • POST /token/revoke — Revoke a token by name
  • GET /token — List current user’s active tokens

Requirements

  • Python 3.12+
  • PostgreSQL
  • AWS Cognito User Pool
  • asyncpg, sqlalchemy, fastapi, passlib[argon2], cognito-jwt-verifier

Getting Started

  1. Update your database URL in db.py:
DATABASE_URL = "postgresql+asyncpg://user:password@localhost/tokenkeeper"
  1. Set up your Cognito issuer and client ID in auth.py:
ISSUER = "https://cognito-idp.<region>.amazonaws.com/<user_pool_id>"
CLIENT_IDS = ["<app_client_id>"]
  1. Run the FastAPI app:
uvicorn tokenkeeper.main:app --reload

License

MIT

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

tokenkeeper_api-0.0.2.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

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

tokenkeeper_api-0.0.2-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file tokenkeeper_api-0.0.2.tar.gz.

File metadata

  • Download URL: tokenkeeper_api-0.0.2.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for tokenkeeper_api-0.0.2.tar.gz
Algorithm Hash digest
SHA256 484e05c2ebdf57996b3e90330cfc6d5931d086d95d39d96387fe92d36b779d75
MD5 3cc17d6c8a701d11662ff22972324fea
BLAKE2b-256 74f552229ea09a39b9b3e8b8b4ebbd87906b55aab19b2ea3468045b7f4186492

See more details on using hashes here.

File details

Details for the file tokenkeeper_api-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for tokenkeeper_api-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ce3ad57a4499c99bea3239685faea90a75dbd689a4153c953aebcc78264998fb
MD5 68adbcc23f41fbc7733a903939f83a7a
BLAKE2b-256 bde7ff5b51423f754b8a654bc2ff70787c1ed0e67b85d05fc98d860fc68aed8d

See more details on using hashes here.

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