Comprehensive OAuth 2.1 / FAPI + AuthZEN PDP + FIPS client library
Project description
EmpowerNow SDK – Python & React packages
EmpowerNow provides a secure‐by‐default toolkit for building apps on top of the EmpowerNow Platform. The SDK is split into two families:
| Package | Runtime | Purpose |
|---|---|---|
empowernow-common |
Python 3.10 – 3.12 | Shared cryptography, OAuth helpers, AuthZEN PDP client, Redis/metrics utilities. |
@empowernow/bff-auth-react |
React 18 | Hooks & components for the Backend-for-Frontend (BFF) cookie-based auth model. |
@empowernow/ui |
React 18 | Headless UI-component library used by all EmpowerNow SPAs. (Depends on either @empowernow/bff-auth-react or the legacy shim @empowernow/react.) |
Why no browser-side OAuth client? EmpowerNow moved to a BFF architecture to comply with FAPI 2.0 Baseline / Advanced and to keep tokens out of the browser. The legacy
@empowernow/reactlibrary now acts as a thin re-export of@empowernow/bff-auth-reactfor backward compatibility. It no longer handles tokens.
Installation
Python (server-side services)
pip install "empowernow-common>=2.3,<3"
Optional extras:
empowernow-common[fips]– Use when running under an OpenSSL FIPS provider.empowernow-common[redis],empowernow-common[kafka], etc. – Feature-scoped extras, see pyproject.toml.
React (front-end SPAs)
npm install @empowernow/bff-auth-react @empowernow/ui
If you still have code importing @empowernow/react, update it at your own pace – the alias re-exports the new package so nothing breaks at runtime.
Quick start
Using the Python OAuthClient
from empowernow_common.oauth import OAuthClient
oauth = OAuthClient(
issuer="https://idp.example.com",
client_id="python-client",
client_secret="…", # confidential client
redirect_uri="https://bff.example.com/auth/callback",
scopes=["openid", "profile"]
)
auth_url = oauth.create_authorization_url(state="xyz")
print("Open browser to", auth_url)
React – wrap your SPA in the AuthProvider
import { AuthProvider } from '@empowernow/bff-auth-react';
import { createRoot } from 'react-dom/client';
import App from './App';
createRoot(document.getElementById('root')!).render(
<AuthProvider baseUrl={import.meta.env.VITE_BFF_BASE_URL}>
<App />
</AuthProvider>
);
useAuth() gives you isAuthenticated, user, session and convenience helpers like login() and logout(); apiClient is a fetch wrapper that automatically adds CSRF headers and credentials:"include".
Security & Compliance
- FAPI 2.0 ready – private-key-JWT, PAR, JARM, DPoP and SameSite cookie model supported at the BFF layer.
- FIPS option – When the host OpenSSL runs in FIPS 140-3 mode,
empowernow-commoncan validate algorithms at start-up and periodically (opt-in via envFIPS_CONTINUOUS_VALIDATION=1). - No browser tokens – SPAs never see access- or refresh-tokens; they use HttpOnly cookies issued by the BFF.
- Structured logging & Prometheus metrics built in.
Repository layout
client_sdk/empowernow-packages/
├── packages/
│ ├── empowernow-common/ # Python package
│ ├── @empowernow/bff-auth-react/ # React auth kit
│ ├── @empowernow/ui/ # UI kit (optional peer)
│ └── empowernow-react/ # Shim – re-exports BFF kit
Contributing
Pull requests are welcome. Please run pre-commit run -a and ensure pytest -q / pnpm test are green before opening a PR.
© 2025 EmpowerNow – Apache 2.0 licence.
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 empowernow_sdk-2.3.12.tar.gz.
File metadata
- Download URL: empowernow_sdk-2.3.12.tar.gz
- Upload date:
- Size: 119.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cc6cc52fed9d4bc41ceb15342a61000bd9ad24cebbb96e9639f492c74fa662c
|
|
| MD5 |
ac237dacd27b139278a6c9c5a3a6329e
|
|
| BLAKE2b-256 |
684565ae5a07b855864e194fd3e1a92f2d25bb35fec0ead0f641e754a968d1d6
|
File details
Details for the file empowernow_sdk-2.3.12-py3-none-any.whl.
File metadata
- Download URL: empowernow_sdk-2.3.12-py3-none-any.whl
- Upload date:
- Size: 135.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bda1ae6d1bc2aede2426e011d840fbc9ed308a027c4e5b0ce0ab24ba209ffdf1
|
|
| MD5 |
5d20459df0aa4bc12e85e15084499344
|
|
| BLAKE2b-256 |
3efa7086a27d1739c76067362f3b55457b35ceb2ac2c51a5bfc9d6b2e7d0100f
|