Hanzo IAM SDK - Identity and Access Management for Python
Project description
hanzoai-iam
Identity and Access Management SDK for the Hanzo ecosystem. Built on Casdoor with organization-aware multi-tenancy.
The PyPI distribution is hanzoai-iam; the import path is hanzo_iam.
Installation
pip install hanzoai-iam
With FastAPI integration:
pip install hanzoai-iam[fastapi]
With KMS support for certificate management:
pip install hanzoai-iam[kms]
Quick Start
from hanzo_iam import IAMClient, IAMConfig
config = IAMConfig(
endpoint="https://iam.hanzo.ai",
client_id="your-client-id",
client_secret="your-client-secret",
org_name="HANZO",
)
client = IAMClient(config)
# Get authorization URL for user login
auth_url = client.get_auth_url(redirect_uri="https://yourapp.com/callback")
# Exchange code for tokens
tokens = client.get_token(code="auth-code-from-callback")
# Get user info
user = client.get_user_info(access_token=tokens.access_token)
Organizations
| Organization | Endpoint | Description |
|---|---|---|
| HANZO | https://iam.hanzo.ai | Hanzo AI platform |
| ZOO | https://iam.zoo.dev | Zoo Labs Foundation |
| LUX | https://iam.lux.network | Lux blockchain network |
| PARS | https://iam.pars.dev | Pars development platform |
Environment Variables
One canonical prefix — IAM_*. No upstream-brand aliases, no per-org variants.
# Required
IAM_ENDPOINT=https://hanzo.id
IAM_CLIENT_ID=your-client-id
IAM_CLIENT_SECRET=your-client-secret
# Optional (defaults shown)
IAM_ORG=hanzo
IAM_APP=app
IAM_CERT=path/to/cert.pem # PEM file or inline PEM content
FastAPI Integration
from fastapi import FastAPI, Depends
from hanzo_iam.fastapi import IAMAuth, get_current_user
from hanzo_iam import IAMConfig, User
app = FastAPI()
config = IAMConfig.from_env()
auth = IAMAuth(config)
@app.get("/protected")
async def protected_route(user: User = Depends(auth.require_user)):
return {"user": user.name, "org": user.owner}
@app.get("/optional")
async def optional_auth(user: User | None = Depends(auth.optional_user)):
if user:
return {"message": f"Hello, {user.name}"}
return {"message": "Hello, anonymous"}
Client Credentials Flow
For service-to-service authentication:
from hanzo_iam import IAMClient, IAMConfig
config = IAMConfig(
endpoint="https://iam.hanzo.ai",
client_id="service-client-id",
client_secret="service-client-secret",
org_name="HANZO",
)
client = IAMClient(config)
# Get service token
tokens = client.get_client_credentials_token()
# Use token for API calls
headers = {"Authorization": f"Bearer {tokens.access_token}"}
Async Client
import asyncio
from hanzo_iam import AsyncIAMClient, IAMConfig
async def main():
config = IAMConfig.from_env()
client = AsyncIAMClient(config)
# All methods are async
tokens = await client.get_client_credentials_token()
user = await client.get_user_info(tokens.access_token)
print(f"Authenticated as: {user.name}")
asyncio.run(main())
API Reference
| Method | Description |
|---|---|
get_auth_url(redirect_uri, state, scope) |
Generate OAuth authorization URL |
get_token(code) |
Exchange authorization code for tokens |
refresh_token(refresh_token) |
Refresh access token |
get_client_credentials_token() |
Get token via client credentials flow |
get_user_info(access_token) |
Get user info from access token |
parse_jwt(token) |
Parse and validate JWT claims |
get_user(user_id) |
Get user by ID |
get_users() |
List all users in organization |
create_user(user) |
Create new user |
update_user(user) |
Update existing user |
delete_user(user_id) |
Delete user |
get_organizations() |
List organizations |
get_organization(name) |
Get organization by name |
License
Apache-2.0
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 hanzoai_iam-1.1.2.tar.gz.
File metadata
- Download URL: hanzoai_iam-1.1.2.tar.gz
- Upload date:
- Size: 18.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8800f4b4610f562ff7c6d1bf31bf26c6c3597eb37b3c386851e9ca4e5698994f
|
|
| MD5 |
603dea94b721d99a08007e002ce93754
|
|
| BLAKE2b-256 |
9bac7d0e9b2d11dcf1d9428d230df8aa615bacbd1da7a01c33f41bde35309563
|
File details
Details for the file hanzoai_iam-1.1.2-py3-none-any.whl.
File metadata
- Download URL: hanzoai_iam-1.1.2-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0359db2679203c88cf3d41d271bf4233dc3bb6177d57377b1468a28e613b7387
|
|
| MD5 |
5eadf6012b35af5882fc672f34596858
|
|
| BLAKE2b-256 |
dfa9663960ccb2aa2b40ceb25d69801a86fad074d6f2ef48f958157406fdd1a3
|