认证与 API Key
并行AI API 支持两种认证方式:
- API Key(
sk-hub-xxx)— 长期凭证,用于第三方客户端和集成 - JWT Token(
eyJhbGc...)— 短期凭证,用于官方桌面/Web 客户端
/hub/v1/chat/completions 等核心端点同时接受这两种凭证。你选一种用就行。
认证头格式
Authorization: Bearer <token>不管是 API Key 还是 JWT,都用 Bearer 方式放在 HTTP Header 里。完全符合 OpenAI 规范。
API Key 的生命周期
创建
登录后进入 控制台 → API Keys,点击"创建"。 新 Key 只会在创建时显示一次明文,务必立即复制。
存储机制
我们只在数据库存储 SHA-256 哈希,不留明文。这意味着:
- ✅ 即使数据库泄漏,攻击者也拿不到可用 Key
- ✅ 你可以随时删除 Key(立即失效)
- ❌ Key 丢失无法找回,必须删除后重新创建
管理操作
- 重命名:帮助你区分不同项目/场景
- 启用/禁用:临时关闭不影响其他 Key
- 删除:彻底失效,无法恢复
- 使用统计:每个 Key 的调用次数、最后使用时间
安全最佳实践
🔐 API Key 等同于你账号的凭证,泄漏后别人可以代你消费积分。
✅ 推荐做法
- 每个项目/环境用独立的 Key(方便追踪和吊销)
- 把 Key 放在环境变量里,不要硬编码
- 服务端代理所有 API 调用,不要在前端暴露 Key
- 定期检查控制台的"最近使用"是否异常
❌ 禁止做法
- 把 Key commit 到 Git 仓库(即使是私有仓库也不要)
- 在浏览器客户端直接调用(别人能看到)
- 截图分享时不打码
- 多人共享同一个 Key
泄漏了怎么办?
- 立即去 控制台 删除该 Key
- 检查账单流水是否有异常调用
- 如有非本人调用,发邮件
admin@bingxingai.com申请补偿 - 创建新 Key,更新所有相关配置
JWT Token(桌面 Web 客户端用)
当你用 Web 控制台 登录时,服务器会返回一对 Token:
- Access Token:2 小时有效,每次 API 调用都带它
- Refresh Token:30 天有效,用于刷新 Access Token
浏览器的 Web 应用会自动管理这一对,你不需要手动操作。 只有你自己写 SDK 时才需要关心 JWT。
速率限制
目前暂未启用严格限流,但有基础保护:
- 单个 Key 每分钟最多 60 次请求(基础 / 标准 / 无限 套餐各有不同)
- 超限返回
429 Too Many Requests - 建议客户端做指数退避重试
错误码
| HTTP 状态 | 业务 code | 含义 |
|---|---|---|
| 401 | 1005 | Token 无效或过期 |
| 401 | 1006 | 未提供认证头 |
| 402 | 2001 | 积分余额不足 |
| 429 | 2003 | 请求频率过高 |