feat(auth): 统一 X-Server-Key 全路径鉴权(防扫描探测)+ per-IP 滑动窗口限流
This commit is contained in:
1 parent
649ebbe12b
commit
415a04dea8
5 files changed
+106
-51
No files matched your search
@@ -74,19 +74,22 @@ pnpm typecheck # 仅类型检查,不运行
|
||||
|
||||
`/url` 在外部音源与平台直连都失败时,自动降级到**酷我**兜底:按歌名/歌手/时长匹配同一首歌后走 kw 通道(匿名可拿无损)。kg 可由 hash 反查歌曲信息;其它平台需要兜底时给 `/url` 传 `name`/`singer`/`interval` 查询参数。
|
||||
|
||||
## 调用鉴权(AUTH_KEY)
|
||||
## 调用鉴权与限流
|
||||
|
||||
设置环境变量 `AUTH_KEY` 后,全部业务接口要求携带调用秘钥(未设置则不鉴权):
|
||||
### 调用秘钥(AUTH_KEY)
|
||||
|
||||
设置环境变量 `AUTH_KEY` 后,**全部路径**(含文档页、健康检查、不存在的路径)都要求调用秘钥——未授权请求统一返回 401,不暴露 404/401 差异,防止接口被扫描探测。未设置则不鉴权。
|
||||
|
||||
```
|
||||
Authorization: Bearer <AUTH_KEY> # 亦接受裸值
|
||||
X-Api-Key: <AUTH_KEY>
|
||||
?key=<AUTH_KEY> # 查询参数(播放器直接拉流场景)
|
||||
X-Server-Key: <AUTH_KEY> # 统一验证头
|
||||
?key=<AUTH_KEY> # 仅 /stream/* 流代理接受(播放器拉流无法带自定义头)
|
||||
```
|
||||
|
||||
豁免路径:`/health`、`/`、`/docs`、`/redoc`、`/openapi.json`。秘钥错误返回 401。
|
||||
启用鉴权时 `/url` 返回的代理流地址(如 qs 解密流)会自动附带 `?key=`,播放器可直接拉流。
|
||||
启用鉴权时 `/url` 返回的代理流地址(如 qs 解密流)会自动附带 `?key=`。
|
||||
|
||||
### 限流(RATE_LIMIT)
|
||||
|
||||
per-IP 滑动窗口限流,`RATE_LIMIT` 为每 IP 每分钟允许的请求数(默认 120,设 0 关闭)。超限返回 429 + Retry-After;鉴权失败的请求同样计数(防秘钥爆破)。
|
||||
|
||||
## 外部音源
|
||||
|
||||
|
||||
Reference in new issue
Block a user