{"repo":"benavlabs/crudauth","free":true,"listed":false,"github":"https://github.com/benavlabs/crudauth","clone":"git clone https://github.com/benavlabs/crudauth.git","description":"Batteries-included, transport-agnostic authentication for FastAPI.","language":"Python","stars":23,"topics":["auth","authentication","backend","fastapi","security","sqlalchemy"],"license":"MIT","category":"auth-billing-email","readme_excerpt":"Batteries-included, transport-agnostic authentication for FastAPI. Docs · DeepWiki · Discord crudauth gives you one CRUDAuth object that wires cookie sessions, JWT bearer tokens, OAuth, and email flows (verify / reset / change) - with CSRF, escalating login lockout, sudo mode, and multi-device session management - over your own SQLAlchemy User model. App policy lives in hooks, not in forked dependency code. Sessions and bearer both resolve to the same Principal , so narrowing or adding a transport never changes how you authorize a route. Features - Transport-agnostic : cookie sessions and JWT bearer tokens behind a single Principal ; first credential present wins, and authorization code never depends on which transport authenticated. - Your model, your schema : works over your existing SQLAlchemy User via a logical-field column map - no forced renames, no second user table. - Secure by default : synchronizer-token CSRF, escalating per-IP/per-user login lockout, bcrypt with SHA-256 pre-hash (no 72-byte truncation), timing-equalized login, and trusted-proxy IP resolution. - OAuth : Google, GitHub, or a custom provider - with the state bound to the initiating browser to block login CSRF. - Email flows : verify / reset / change - you implement the EmailSender port (render your own HTML from context.link ), the package mints and verifies the signed, single-use tokens. - Sudo mode : short-lived re-authentication to gate sensitive actions, stamped on the session and cleared on logou","default_branch":null,"files":null,"tree":[],"storefront":"/r/benavlabs","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/benavlabs/crudauth/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}