EmpowerID Identity Fabric Common SDK
The EmpowerID Identity Fabric Common SDK provides authentication helpers, configuration management and utilities shared across EmpowerID Identity Fabric micro-services and platform integrations.
pip install "empowernow-common[fastapi]"
Quick-start
Async OAuth
from empowernow_common import async_oauth
cfg = {
"client_id": "svc",
"client_secret": "***",
"token_url": "https://auth.empowernow.io/oauth/token",
"authorization_url": "https://auth.empowernow.io/oauth/authorize",
}
async with async_oauth(**cfg) as oauth:
token = await oauth.get_token()
print(token.access_token)
FastAPI integration
from fastapi import FastAPI, Depends
from empowernow_common.fastapi import build_auth_dependency
app = FastAPI()
# Create auth dependency for token validation
auth_dependency = build_auth_dependency(
idps_yaml_path="/config/idps.yaml",
default_idp_for_opaque="legacy"
)
@app.get("/protected")
async def protected_route(claims: dict = Depends(auth_dependency)):
return {"user": claims["subject"]}
See the docs/ folder for full guides. For upgrading to the AuthZEN Draft‑04 API, read docs/authzen_migration_draft04.md.
Optional extras
redis– distributed cacheskafka– log sink and event busmetrics– Prometheus clientfastapi– web-framework helpers
Development
git clone https://github.com/empowernow/empowernow-common.git
cd empowernow-common
pip install -e .[dev]
pre-commit install
pytest -q
Secret Loader
empowernow_common provides a zero-dependency helper to resolve secrets delivered as Docker/K8s secrets or environment variables.
from empowernow_common import load_secret
# read from /run/secrets/primary/db-password
password = load_secret("file:primary:db-password")
# read environment variable MY_API_KEY (dev only)
api_key = load_secret("env:MY_API_KEY")
Pointer grammar:
file:<instance>:<id>– Reads<mount>/<instance>/<id>wheremountdefaults to/run/secretsor$FILE_MOUNT_PATH.filex:<instance>:<id>– Same asfile:but returns rich structures: JSON objects or line-basedkey=valuepairs are parsed into a dict.env:<VAR>– Returns the environment variable value.
Providers are pluggable:
from empowernow_common.secret_loader import register_provider
def vault_provider(path: str):
...
register_provider("vault", vault_provider)
Audit: pass audit_hook to load_secret to stream access events to Kafka/SIEM.
Shared Kafka Producer
The SDK includes an optional, zero-config Kafka helper so services can publish structured events without re-implementing connection logic.
from empowernow_common.kafka.platform_producer import publish_structured
from empowernow_common.kafka.topics import TOPICS
await publish_structured(
"pdp.decisions", # event_type
{"decision": "allow", "id": "123"}, # payload (JSON-serialisable)
topic=TOPICS["pdp.decisions"], # canonical topic
key="123" # partition key (optional)
)
Key points:
- Optional dependency – install with
pip install empowernow-common[kafka]. - Reads
KAFKA_BOOTSTRAP_SERVERS,SERVICE_NAME,KAFKA_ENABLEDenv vars. - No-ops automatically if Kafka is disabled or
aiokafkaisn’t installed. empowernow_common.kafka.topicsprovides a central map so topic names evolve without touching every service.- Secret-access audit hook already uses the shared producer; you can register
additional hooks via:
from empowernow_common.kafka.platform_producer import publish
See kafka/platform_producer.py for full documentation and
kafka/topics.py for the canonical topic list.
© EmpowerNow, Inc. MIT License
Metadata
Release files for empowernow-common 3.24.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| empowernow_common-3.24.0.tar.gz | 484.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| empowernow_common-3.24.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / empowernow_common-3.24.0.tar.gz
| Download URL | empowernow_common-3.24.0.tar.gz |
|---|---|
| Size | 484.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
912811a06f6dcc3c563aeadc6e0d9c41ce8e2b3d6d40921521099be9a537f961
|
|
BLAKE2b-256 checksum How to use checksums |
e913717cb39f9a9173ed8e34c0fbd3b725906b251a96a3b0635da32c7498b24c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / empowernow_common-3.24.0-py3-none-any.whl
| Download URL | empowernow_common-3.24.0-py3-none-any.whl |
|---|---|
| Size | 557.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb3ed8a385c7aa345b83392c3d7277e24b99da7051d47cad89a5e98f44a99f07
|
|
BLAKE2b-256 checksum How to use checksums |
9001f4272121b7cc7842fa03f7c06dd77563fc608ed961978cafd102f12996f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|