Skip to main content

河南农业大学统一授权认证服务 python SDK

Project description

HenauAuth FastAPI 集成示例

本项目将 河南大学 OAuth 2.0 服务 与 FastAPI 应用程序集成,以便于开发者使用

概述

HenauAuth 库简化了在 FastAPI 应用程序中针对河南大学 OAuth 2.0 服务器验证用户的过程。 此示例展示了该库的基本设置和用法。

准备工作

  • Python 3.10+
  • FastAPI
  • henau_auth 库 (通过 pip 安装: pip install henau_auth)

配置

  1. 从河南大学 OAuth 2.0 服务器管理面板获取 app_idapp_secret

  2. 在您的 FastAPI 应用程序中配置 HenauAuth 客户端:

    from fastapi import FastAPI, Request
    from henau_auth import HenauAuth
    
    app = FastAPI()
    
    client = HenauAuth(
        app_id="YOUR_APP_ID",  # 替换为您的应用程序 ID
        app_secret="YOUR_APP_SECRET",  # 替换为您的应用程序密钥
        base_url="https://oauth.henau.edu.cn"  # 授权服务器地址 (默认为 https://oauth.henau.edu.cn)
    )
    
    app.add_middleware(
        client.get_fastapi_middleware(),
        login_router="/login",  # 登录接口路由 (默认为 /login)
        excluded_routes=["/test"],  # 排除的路由 (不需要身份验证, 默认为 [])
        jwt_secret="YOUR_JWT_SECRET",  # JWT 密钥 (建议提供一个 32 字符的字符串)
        expires_delta=3600,  # JWT 过期时间,以分钟为单位 (默认为 3600)
        # get_user_func = lambda payload: User.get_or_none(User.open_id == payload["henau_openid"])
        # 如果提供了 get_user_func,它将在检索用户信息后被调用。
        # 该函数应返回一个用户对象,该对象将存储在 request.state.user 中。
    )
    
    
    @app.get("/login")
    async def login(request: Request, code: str):
        return {"user": request.state.user, "token": request.state.token}
    
    
    @app.get("/other")
    async def user(request: Request):
        return {"user": request.state.user}
    
    
    @app.get("/test")
    async def test(request: Request, code: str = None):
        return {"code": code, "user": request.state}
    

    重要提示:"YOUR_APP_ID""YOUR_APP_SECRET" 替换为您实际的应用程序凭据。 强烈建议设置一个强大的 32 字符 jwt_secret 以确保安全。

用法

  1. 运行 FastAPI 应用程序:

    uvicorn app:app --reload
    
  2. 访问 /login 端点以启动 OAuth 2.0 流程。 您需要使用您的 app_id 构建授权 URL,并将用户重定向到河南大学 OAuth 2.0 服务器。 成功验证后,服务器会将用户重定向回您的 /login 端点,并提供授权 code

  3. HenauAuth 中间件将自动处理授权码的交换以获取访问令牌,并检索用户的信息。 用户对象将在 request.state.user 中可用,JWT 令牌将在 request.state.token 中可用。

  4. 受保护的路由 (即,不在 excluded_routes 中的路由) 将需要在 Authorization 标头中提供有效的 JWT 令牌。

接口

  • /login: 登录接口。 处理来自河南大学 OAuth 2.0 服务器的 OAuth 2.0 回调。
  • /other: 示例受保护的接口。 需要有效的 JWT 令牌。
  • /test: 示例不受保护的接口。 无需身份验证即可访问。

自定义用户检索 (get_user_func)

app.add_middleware 中的 get_user_func 参数允许您将经过身份验证的用户信息与应用程序的用户模型集成。 该函数接收来自访问令牌的有效负载,并应根据有效负载中的信息返回用户对象。 示例代码展示了如何使用有效负载中的 open_id 从数据库中检索用户。

注意

  • 这是一个基本示例,可能需要根据您的特定应用程序要求进行调整。
  • 确保在您的生产环境中实施适当的错误处理和安全措施。
  • 有关更高级的配置选项和功能,请参阅 henau_auth 库文档。

Project details


Download files

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

Source Distribution

henau_auth-0.1.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

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

henau_auth-0.1.1-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file henau_auth-0.1.1.tar.gz.

File metadata

  • Download URL: henau_auth-0.1.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.5

File hashes

Hashes for henau_auth-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0893a4e53eb98ee05291c58cdcf11d9a831035402b000e0c441fcf534d5275f6
MD5 323d4fc85c3ffb39712415f8c3e47615
BLAKE2b-256 66968951b566fa99cf2716ba3810c955b9b6346ceeb5c988d82f2c6207afba83

See more details on using hashes here.

File details

Details for the file henau_auth-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for henau_auth-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e31924f8e9311eb7df4a953f2b316d825d7d4669629d4686749ac1f73319a95b
MD5 ef4c83890379b2d40487ef599532241d
BLAKE2b-256 80428f2a06868ac0bb4ce8c8cb31e911cadefb3f6a77a986d83edf7c4d2e4546

See more details on using hashes here.

Supported by

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