目前仅仅只有鉴权方法D typed 的sdk
这是一个用于 EdgeOne(或类似 CDN/边缘服务)鉴权的轻量级 Python SDK。项目目前提供两种鉴权方式:
python -m venv .venv .venv\Scripts\Activate.ps1 pip install -r requirements.txt
注意:如果仓库没有 requirements.txt,只需安装 FastAPI 与 Uvicorn:
pip install fastapi uvicorn
仓库中提供脚本 typed.py,用于生成基于 D 方式的鉴权 URL。
"original_url": "https://www.example.com/foo.jpg",
"secret_key": "u5e9p5vi83oznkAF2LGBv6j0e2G6UTJ4",
"token_param_name": "token",
"timestamp_param_name": "t",
"timestamp": None,
例如: 1721029907 (2024年7月15日 15:51:47 UTC+8)
"use_hex_timestamp": True
修改 CONFIG 中的参数后,运行 typed.py 即可生成鉴权 URL。
其中:
original_url 为原始 URL,例如 https://www.example.com/foo.jpg。secret_key 为鉴权密钥,需与 EdgeOne 配置一致。timestamp 为鉴权时间戳,若留空则使用当前时间。use_hex_timestamp 为是否使用十六进制 Unix 时间戳,默认值为 True。项目提供 fastapi 目录内的示例应用,可把密钥放在服务端中的env文件中,通过 HTTP API 生成 token。优点是客户端不保存密钥,便于密钥轮换与集中审计。
运行示例(PowerShell):
powershell 从仓库根目录运行(先激活虚拟环境) python .\fastapi\main.py 或使用 uvicorn(推荐用于生产/开发) uvicorn fastapi.main:app --reload --host 127.0.0.1 --port 8000
示例调用:
接口调用: 发送 POST 请求到 http://127.0.0.1:8000/generate-auth-url 请求体示例: json
{ "original_url": "https://www.example.com/foo.jpg", "token_param_name": "token", "timestamp_param_name": "t", "use_hex_timestamp": true, "expire_seconds": 600 }
API 返回示例(JSON):
{ "auth_url": "https://www.example.com/foo.jpg?token=cadcec4a04e67b9c2abf4b61c642a0dd&t=1721029907", "current_time": 1620000000, "current_time_iso": "2021-05-03T12:00:00", "expire_time": 1620000600, "expire_time_iso": "2021-05-03T12:10:00", "expire_seconds": 600 }
typed.py - 本地生成鉴权 URL 的脚本(D 方式)fastapi/ - FastAPI 示例服务及相关代码fastapi/main.py - FastAPI 示例服务主文件fastapi/.env - FastAPI 示例服务环境变量配置文件,包含密钥等敏感信息。0x 开头),请在计算 token 时去掉 0x。欢迎提交 issue/PR。此项目为示例/参考实现,请根据实际生产需求进行安全加固和代码审计。