logo
0
0
Login

EdgeOne URL Token鉴权 SDK

目前仅仅只有鉴权方法D typed 的sdk

这是一个用于 EdgeOne(或类似 CDN/边缘服务)鉴权的轻量级 Python SDK。项目目前提供两种鉴权方式:

  • 本地 TypeD 方式
  • FastAPI 远程计算鉴权链接:在一个远程服务中集中保存密钥并暴露加密接口,适合不希望在客户端保存密钥的场景

主要特性

  • 简洁的 TypeD 方式 URL 鉴权实现
  • 一个可运行的 FastAPI 示例服务,用于远程生成鉴权 token和鉴权链接

快速开始

  1. 克隆或下载仓库到本地。
  2. 推荐创建虚拟环境并安装依赖(如果你要运行 FastAPI 服务):
python -m venv .venv .venv\Scripts\Activate.ps1 pip install -r requirements.txt

注意:如果仓库没有 requirements.txt,只需安装 FastAPI 与 Uvicorn:

pip install fastapi uvicorn

本地使用:edgeone typeD 方式(示例)

CONFIG 参数说明

仓库中提供脚本 typed.py,用于生成基于 D 方式的鉴权 URL。

"original_url": "https://www.example.com/foo.jpg",
鉴权密钥(必填)
"secret_key": "u5e9p5vi83oznkAF2LGBv6j0e2G6UTJ4",
鉴权加密串参数名称(默认值: "token")
"token_param_name": "token",
鉴权时间戳参数名称(默认值: "t")
"timestamp_param_name": "t",
生成鉴权URL的时间戳(留空则使用当前时间)
"timestamp": None,

例如: 1721029907 (2024年7月15日 15:51:47 UTC+8)

是否使用十六进制Unix时间戳(True/False)
"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 服务

项目提供 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 示例服务环境变量配置文件,包含密钥等敏感信息。

注意事项

  • D 方式在客户端保存密钥存在泄露风险;若对安全要求较高,建议使用 FastAPI 或其它后端集中化密钥管理。
  • timestamp 的格式与服务端约定一致,若使用 hex 表示(以 0x 开头),请在计算 token 时去掉 0x
  • 在生产环境,请使用 HTTPS 并对远程服务做鉴权和限流。

贡献与许可

欢迎提交 issue/PR。此项目为示例/参考实现,请根据实际生产需求进行安全加固和代码审计。

About

No description, topics, or website provided.
Language
Python100%