Skip to main content

AuthHub Python SDK

AuthHub统一权限平台的Python SDK,提供本地Token验证和权限校验功能。

功能特性

  • ✅ SSO 登录集成 - 一行代码接入飞书SSO登录
  • ✅ 本地Token验证(RS256)
  • ✅ 本地权限校验(零网络开销)
  • ✅ 配置自动同步
  • ✅ 权限变更实时通知
  • ✅ 装饰器支持
  • ✅ FastAPI/Flask/Django中间件

安装

# 基础安装
pip install authhub-sdk

# 包含FastAPI支持
pip install authhub-sdk[fastapi]

# 包含Flask支持
pip install authhub-sdk[flask]

# 包含Django支持
pip install authhub-sdk[django]

快速开始

1. 初始化SDK

from authhub_sdk import AuthHubClient

client = AuthHubClient(
    authhub_url="https://authhub.company.com",
    system_id="system_a",
    system_token="your_system_token",
    namespace="system_a",
    redis_url="redis://localhost:6379"
)

2. 使用装饰器

from authhub_sdk.decorators import require_auth, require_role, require_permission

@require_auth
def get_user_profile(user_info):
    return {"user": user_info}

@require_role("editor")
def edit_document(doc_id, user_info):
    # 编辑文档
    pass

@require_permission("document", "write")
def create_document(user_info):
    # 创建文档
    pass

3. FastAPI SSO 登录集成(推荐)

from fastapi import FastAPI, Request
from authhub_sdk import AuthHubClient
from authhub_sdk.middleware.fastapi_sso import setup_sso

app = FastAPI()

# 初始化客户端
client = AuthHubClient(
    authhub_url="http://localhost:8000",
    system_id="1",
    system_token="your_token",
    namespace="system_a",
    redis_url="redis://localhost:6379"
)

# 一行代码集成 SSO 登录!
setup_sso(
    app,
    client=client,
    login_required=True,
    public_routes=['/health', '/docs']
)

@app.get("/dashboard")
async def dashboard(request: Request):
    user = request.state.user  # 自动注入用户信息
    return {"user": user.get("username")}

自动提供的路由:

  • GET /auth/login - 触发SSO登录
  • GET /auth/callback - SSO回调处理(自动)
  • GET/POST /auth/logout - 登出

4. FastAPI 权限验证集成

from fastapi import FastAPI
from authhub_sdk.middleware.fastapi import AuthHubMiddleware

app = FastAPI()
app.add_middleware(AuthHubMiddleware, client=client)

@app.get("/api/documents")
async def get_documents(request: Request):
    user = request.state.user  # 自动注入用户信息
    return {"documents": []}

5. 手动验证

token = "eyJhbGc..."

# 验证Token
user_info = client.verify_token(token)

# 检查权限
has_permission = client.check_permission(
    user_info, 
    resource="document", 
    action="write"
)

# 检查路由权限
has_route_access = client.check_route(
    user_info,
    path="/api/documents/123",
    method="GET"
)

文档

完整文档请访问: https://docs.authhub.com/sdk/python

许可证

MIT License

Metadata

Release files for authhub-sdk 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for authhub-sdk 0.3.0
File Size Uploaded Provenance
authhub_sdk-0.3.0.tar.gz 61.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for authhub-sdk 0.3.0
File Interpreter ABI Platform
authhub_sdk-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 77.1 kB

Release files / authhub_sdk-0.3.0.tar.gz

Download URL authhub_sdk-0.3.0.tar.gz
Size 61.2 kB
Tags Source
SHA-256 checksum
How to use checksums
329c6e0e59f2ce3beb5fc2bc42b4b0716fac56d5f06c7cc427d6f96d79f4294d
BLAKE2b-256 checksum
How to use checksums
cf796657a6a93fbb00e7b09dd850f8d3fbd031748aa2c189b923087b4284e4bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"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}

Release files / authhub_sdk-0.3.0-py3-none-any.whl

Download URL authhub_sdk-0.3.0-py3-none-any.whl
Size 15.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a1db7ff304087f1dae748708d176bab3666fdc1fe3580137aceadc816ef5ba7
BLAKE2b-256 checksum
How to use checksums
4ab3c40fe30852f3e727f8fef5d2f9e85f11176c1e477321baf42d364fad8d07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"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}

Security for authhub-sdk 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page