Credential→identity adapters for semql: bearer-token verifiers (HMAC, JWKS, introspection) and mappers (dict, mTLS x509) that produce a semql AuthContext.
Project description
semql-auth
Credential→identity adapters for semql.
semql threads an AuthContext (identity + roles) through
Catalog.compile(viewer=...) to enforce required_roles cube/field
visibility and security_sql row-level scoping. This package turns a
transport credential into that AuthContext:
TokenVerifier— verify a bearer token and return its claims.HMACVerifier— symmetric HS256/384/512.JWKSVerifier— asymmetric RS/ES, fetching keys from a JWKS URL (needs thejwksextra:pip install semql-auth[jwks]).
TokenMapper— map a verified credential to anAuthContext.DictMapper— static, in-memorytoken → AuthContexttable.IntrospectMapper— OAuth2 token introspection (introspectextra).X509Mapper— derive identity from an mTLS client cert subject / SAN (the reference cryptography decoder needs thex509extra).
AuthContext itself lives in semql.model — the compiler depends on it,
so it stays in the pure core. This package holds only the adapters, which
carry optional third-party dependencies (PyJWT, httpx, cryptography) that
the core shouldn't.
Install
pip install semql-auth
pip install semql-auth[jwks] # JWKS verifier (httpx)
pip install semql-auth[introspect] # OAuth2 introspection
pip install semql-auth[x509] # mTLS client cert decoder
Quick start
from semql import Catalog
from semql_auth import HMACVerifier, DictMapper
verifier = HMACVerifier(secret="...")
mapper = DictMapper({"tok-abc": ...})
# In your transport: verify the token, map to AuthContext, then
# catalog.compile(query, viewer=auth_context)
See API reference for the full adapter surface.
License
BSD-3-Clause.
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 semql_auth-0.3.0.tar.gz.
File metadata
- Download URL: semql_auth-0.3.0.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5864705e92a966972d6a2154ce59341774241f994941d9cd0c3bfe5d5614950e
|
|
| MD5 |
f889bfad4eb247e54a13de8f122280bb
|
|
| BLAKE2b-256 |
112dd6a962ae02192f8096ed401e968ade55570537459bf435f61d4f8809dfda
|
File details
Details for the file semql_auth-0.3.0-py3-none-any.whl.
File metadata
- Download URL: semql_auth-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa35e142d65582aaf1fe0a6db1d5627c2cd8d3f38e2e8aae49d3797aefa51118
|
|
| MD5 |
3aa416be20d362724c37bc59258121c1
|
|
| BLAKE2b-256 |
770e9b836465caad223ad1365c09424af66698649e8d135e88288915ba7b19a7
|