Skip to main content

🛡️ USSO Python Client SDK

The USSO Python Client SDK (usso) provides a universal, secure JWT authentication layer for Python microservices and web frameworks.
It’s designed to integrate seamlessly with the USSO Identity Platform — or any standards-compliant token issuer.


🔗 Relationship to the USSO Platform

This SDK is the official verification client for the USSO identity service, which provides multi-tenant authentication, RBAC, token flows, and more.
You can use the SDK with:

  • Self-hosted USSO via Docker
  • Any identity provider that issues signed JWTs (with proper config)

✨ Features

  • Token verification for EdDSA, RS256, HS256, and more
  • Claim validation (exp, nbf, aud, iss)
  • Remote JWK support for key rotation
  • Typed payload parsing via UserData (Pydantic)
  • Token extraction from:
    • Authorization header
    • Cookies
    • Custom headers
  • FastAPI integration with dependency injection
  • Django middleware for request-based user resolution
  • 🧪 90% tested with pytest and tox

📦 Installation

pip install usso

With framework extras:

pip install "usso[fastapi]"     # for FastAPI integration
pip install "usso[django]"      # for Django integration

🚀 Quick Start (FastAPI)

from usso.fastapi.integration import get_authenticator
from usso.schemas import JWTConfig, JWTHeaderConfig, UserData
from usso.jwt.enums import Algorithm

config = JWTConfig(
    key="your-ed25519-public-key",
    issuer="https://sso.example.com",
    audience="api.example.com",
    type=Algorithm.EdDSA,
    header=JWTHeaderConfig(type="Authorization")
)

authenticator = get_authenticator(config)

@app.get("/me")
def get_me(user: UserData = Depends(authenticator)):
    return {"user_id": user.sub, "roles": user.roles}

🧱 Project Structure

src/usso/
├── fastapi/            # FastAPI adapter
├── django/             # Django middleware
├── jwt/                # Core JWT logic and algorithms
├── session/            # Stateless session support
├── models/             # JWTConfig, UserData, etc.
├── exceptions/         # Shared exceptions
├── authenticator.py    # High-level API (token + user resolution)

🐳 Integrate with USSO (Docker)

Run your own identity provider:

docker run -p 8000:8000 ghcr.io/ussoio/usso:latest

Then configure your app to verify tokens issued by this service, using its public JWKS endpoint:

JWTConfig(
    jwks_url="http://localhost:8000/.well-known/jwks.json",
    ...
)

🧪 Testing

pytest
tox

🤝 Contributing

We welcome contributions!


📝 License

MIT License © [mahdikiani]

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

usso-0.31.6.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

usso-0.31.6-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

Details for the file usso-0.31.6.tar.gz.

File metadata

  • Download URL: usso-0.31.6.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for usso-0.31.6.tar.gz
Algorithm Hash digest
SHA256 df2fd793773cd94affd9f4add445e7bdbff3956d269723c116774e6d04a364f5
MD5 f07b7bed1e712736d53cabb7fcd830db
BLAKE2b-256 553cfb2949c1bf128990908dfc5345992703f9e7d2c0979983af25a1b20b053f

See more details on using hashes here.

File details

Details for the file usso-0.31.6-py3-none-any.whl.

File metadata

  • Download URL: usso-0.31.6-py3-none-any.whl
  • Upload date:
  • Size: 40.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for usso-0.31.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d6d11d78671c46e05fb8d8d9b2d8249bf7b7e27cc5696005456df32428728f54
MD5 ef7dbf48aca6964903b5ef8ecf57058f
BLAKE2b-256 e5063f68ecd2515a5b283e884d339e4688a750aa3fc4306b45108dc4f341d9f6

See more details on using hashes here.

Release history Release notifications | RSS feed

0.33.0

2 files

0.32.9

2 files

0.32.6

2 files

0.32.5

2 files

0.31.13

2 files

0.31.12

2 files

0.31.11

2 files

0.31.10

2 files

0.31.9

2 files

0.31.8

2 files

0.31.7

2 files

This release

0.31.6 This release

2 files

0.31.5

2 files

0.31.4

2 files

0.31.3

2 files

0.31.2

2 files

0.31.1

2 files

0.31.0

2 files

0.30.1

2 files

0.30.0

2 files

0.29.15

2 files

0.29.14

2 files

0.29.13

2 files

0.29.11

2 files

0.29.10

2 files

0.29.9

2 files

0.29.8

2 files

0.29.7

2 files

0.29.6

2 files

0.29.5

2 files

0.29.4

2 files

0.29.2

2 files

0.29.1

2 files

0.29.0

2 files

0.28.47

2 files

0.28.46

2 files

0.28.45

2 files

0.28.44

2 files

0.28.43

2 files

0.28.42

2 files

0.28.41

2 files

0.28.40

2 files

0.28.39

2 files

0.28.38

2 files

0.28.37

2 files

0.28.36

2 files

0.28.35

2 files

0.28.34

2 files

0.28.33

2 files

0.28.32

2 files

0.28.31

2 files

0.28.30

2 files

0.28.29

2 files

0.28.28

2 files

0.28.27

2 files

0.28.26

2 files

0.28.25

2 files

0.28.24

2 files

0.28.23

2 files

0.28.22

2 files

0.28.21

2 files

0.28.20

2 files

0.28.19

2 files

0.28.18

2 files

0.28.17

2 files

0.28.16

2 files

0.28.15

2 files

0.28.14

2 files

0.28.13

2 files

0.28.12

2 files

0.28.11

2 files

0.28.10

2 files

0.28.9

2 files

0.28.7

2 files

0.28.6

2 files

0.28.5

2 files

0.28.4

2 files

0.28.3

2 files

0.28.2

2 files

0.28.1

2 files

0.28.0

2 files

0.27.22

2 files

0.27.21

2 files

0.27.20

2 files

0.27.19

2 files

0.27.18

2 files

0.27.17

2 files

0.27.16

2 files

0.27.15

2 files

0.27.14

2 files

0.27.13

2 files

0.27.12

2 files

0.27.11

2 files

0.27.10

2 files

0.27.9

2 files

0.27.8

2 files

0.27.7

2 files

0.27.6

2 files

0.27.5

2 files

0.27.4

2 files

0.27.2

2 files

0.27.1

2 files

0.27.0

2 files

0.26.1

2 files

0.26.0

2 files

0.25.4

2 files

0.25.3

2 files

0.25.2

2 files

0.25.1

2 files

0.25.0

2 files

0.24.19

2 files

0.24.18

2 files

0.24.17

2 files

0.24.16

2 files

0.24.15

2 files

0.24.14

2 files

0.24.13

2 files

0.24.12

2 files

0.24.11

2 files

0.24.10

2 files

0.24.9

2 files

0.24.8

2 files

0.24.7

2 files

0.24.6

2 files

0.24.5

2 files

0.24.4

2 files

0.24.3

2 files

0.24.2

2 files

0.24.1

2 files

0.24.0

2 files

0.23.2

2 files

0.23.1

2 files

0.23.0

2 files

0.22.0

2 files

0.21.2

2 files

0.21.1

2 files

0.21.0

2 files

0.20.7

2 files

0.20.6

2 files

0.20.5

2 files

0.20.4

2 files

0.20.3

2 files

0.20.2

2 files

0.20.1

2 files

0.20.0

2 files

0.19.0

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.15.0

2 files

0.14.0

2 files

0.13.0

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page