# 《WaLiAPI - 本地 LLM API 网关》第2-1节:密钥管理与配额控制
作者:小傅哥
博客:https://bugstack.cn (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!😄
大家好,我是技术UP主小傅哥。
欢迎来到 Part 2!从这一节开始,我们进入高级特性篇。首先要解决的是"访问控制"问题——为什么网关需要自己的一套密钥体系,而不是直接让下游用上游的 API Key?
# 一、本章诉求
- 理解网关密钥体系的设计动机
- 实现
sk-waliapi-*格式密钥的生成 - 实现密钥的 CRUD Tauri 命令
- 实现配额限制与用量追踪
- 掌握"Model → DTO"的分层转换模式
# 二、为什么需要网关自己的密钥?
# 2.1 没有网关密钥的世界
如果下游应用直接使用上游 API Key:
ChatBox ──持有 sk-openai-xxx──→ 直连 OpenAI
NextChat ──持有 sk-openai-xxx──→ 直连 OpenAI
WaLiCode ──持有 sk-openai-xxx──→ 直连 OpenAI
1
2
3
2
3
问题:
- Key 分散:同一个上游 Key 散落在 N 个应用里,泄露面大
- 无法管控:想停用某个应用的访问?只能换 Key,所有应用都得改
- 无法计量:不知道每个应用各自消耗了多少 Token
# 2.2 有网关密钥的世界
ChatBox ──sk-waliapi-aaa──┐
NextChat ──sk-waliapi-bbb──┼──→ WaLiAPI ──sk-openai-xxx──→ OpenAI
WaLiCode ──sk-waliapi-ccc──┘ (密钥映射 + 配额 + 审计)
1
2
3
2
3
每个下游应用持有独立的网关密钥,上游真实 Key 只存在网关本地:
- 隔离:吊销某个网关密钥不影响其他应用
- 计量:每个密钥独立的 quota_used 计数
- 限额:quota_limit 限制单密钥的最大 Token 消耗
- 审计:日志中的 api_key_name 让每个请求可追溯来源
- 安全:上游 Key 永不出本地,下游应用拿到网关密钥也没用(只能过网关,且受配额约束)

