河南农业大学统一授权认证服务 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)
配置
-
从河南大学 OAuth 2.0 服务器管理面板获取
app_id和app_secret。 -
在您的 FastAPI 应用程序中配置
HenauAuth客户端:from fastapi import FastAPI, Request from src.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以确保安全。
用法
-
运行 FastAPI 应用程序:
uvicorn app:app --reload
-
访问
/login端点以启动 OAuth 2.0 流程。 您需要使用您的app_id构建授权 URL,并将用户重定向到河南大学 OAuth 2.0 服务器。 成功验证后,服务器会将用户重定向回您的/login端点,并提供授权code。 -
HenauAuth中间件将自动处理授权码的交换以获取访问令牌,并检索用户的信息。 用户对象将在request.state.user中可用,JWT 令牌将在request.state.token中可用。 -
受保护的路由 (即,不在
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
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 henau_auth-0.1.0.tar.gz.
File metadata
- Download URL: henau_auth-0.1.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8475dbbdc6dd1c1a71e38b920112d3634658e42dfb6caba8333048d18c29046f
|
|
| MD5 |
9ae5f44f4705e07ecd08d88a1f3eac13
|
|
| BLAKE2b-256 |
8a12e43c2fe75c003749b9c9879d82cd6d4edd8356041c33ca6f87016c07bb4d
|
File details
Details for the file henau_auth-0.1.0-py3-none-any.whl.
File metadata
- Download URL: henau_auth-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
996c90109d1f5082cba9426d258dc7e91487df77eff809c7b52cae26fbcb4536
|
|
| MD5 |
a8fc6c4ff09b66948f51d232d96016cb
|
|
| BLAKE2b-256 |
884808cd2533c59b740e16041ab9fbee27b452a1481b4cde4750eabe9942a8bf
|