Reusable authentication core and FastAPI/SQLAlchemy adapters for Orcestr applications.
Project description
English · Русский
orcestr-auth
Python authentication core and FastAPI/SQLAlchemy adapters for the Orcestr ecosystem.
The application keeps its real user model and product lifecycle. The package owns password, token, session, cookie, recovery, OAuth and WebSocket authentication mechanics.
Install
pip install "orcestr-auth[all]"
Optional groups:
| Extra | Includes |
|---|---|
fastapi |
dependencies, cookie/CSRF flow and router factory |
sqlalchemy |
auth models, direct user repository and Alembic operations |
oauth |
GitHub, Google and Yandex provider clients |
all |
every first-party adapter |
Main APIs
| Import | Purpose |
|---|---|
orcestr_auth |
config, password helpers, token codec and extension ports |
orcestr_auth.sqlalchemy |
create_auth_models, UserFieldMap, user repository |
orcestr_auth.services |
sessions, verification/reset codes and WebSocket tickets |
orcestr_auth.oauth |
optional provider clients and normalized profiles |
orcestr_auth.fastapi |
auth dependencies, redirect policy and router factory |
orcestr_auth.migrations |
versioned Alembic operations for auth-owned schema |
SQLAlchemy Wiring
Attach auth tables to the application's registry and real user primary key:
from orcestr_auth.sqlalchemy import UserFieldMap, create_auth_models
auth_models = create_auth_models(
registry=Base.registry,
user_model=UserORM,
)
user_fields = UserFieldMap(
id=UserORM.id,
username=UserORM.username,
email=UserORM.email,
password_hash=UserORM.password_hash,
is_active=UserORM.is_active,
email_verified_at=UserORM.email_verified_at,
)
This creates direct indexed queries and real foreign keys. It does not create a second user table and does not use runtime reflection.
FastAPI Wiring
from orcestr_auth.fastapi import create_auth_dependencies, create_auth_router
auth_dependencies = create_auth_dependencies(
config=auth_config,
session_dependency=get_control_db_session,
user_model=UserORM,
user_fields=user_fields,
models=auth_models,
)
router = create_auth_router(
config=auth_config,
application_dependency=get_auth_http_application,
current_user_dependency=auth_dependencies.current_user,
register_model=RegisterRequest,
user_response_model=UserRead,
)
The consumer implements the small AuthHttpApplication boundary for product-specific work:
user creation, legal acceptance, tenant bootstrap, email delivery, audit and rate limits.
Standard endpoints, cookies and token responses remain library-owned.
Security Model
- browser tokens live in HttpOnly cookies and never appear in browser auth JSON;
- cookie mutations require the configured CSRF header;
- refresh tokens are opaque, hashed, rotated and replay-protected;
- access JWTs validate issuer, audience, expiry, type, JTI and server session state;
- recovery codes are hashed, expiring, attempt-limited and one-time;
- OAuth validates redirects and supports state/PKCE without implicit account linking;
- WebSocket access uses short-lived one-time tickets.
See security invariants and architecture boundaries.
Development
uv sync --frozen
uv run pytest -q
uv build
Ecosystem
- All auth packages: Orcestr Auth repository
- UI system:
@orcestr/ui - Product: orcestr.com
License
MIT. See the repository license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orcestr_auth-0.1.1.tar.gz.
File metadata
- Download URL: orcestr_auth-0.1.1.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5259add35deca2318aea19bbdb2fd88a7848266b63e22664bbf60f84716dabe7
|
|
| MD5 |
ce769eff3254bd906b38e94798df9467
|
|
| BLAKE2b-256 |
3604e4620e3fc91adf0729c81291274ccca51da44243f64a2d8cb2e1d7d5d06d
|
File details
Details for the file orcestr_auth-0.1.1-py3-none-any.whl.
File metadata
- Download URL: orcestr_auth-0.1.1-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9050d288f44b00e4dab7d8ad98663b7c00c6e85b4ea48f73f88f738a70df6c42
|
|
| MD5 |
137b8ff60e1e07cf9df17d6ee0ddfb8e
|
|
| BLAKE2b-256 |
43b664562c4af6315d280fcba0d01dfd16f725f4ed168a36c15afdd4e97daa3b
|