身份授权
IEDB 使用基于Token的身份验证来保护 API 访问。Token存储在 SQLite 数据库中,并使用内存缓存来实现高性能验证。
配置
[auth]
enabled = true # 启用/禁用认证
db_path = "./data/auth.db" # 用于存储Token的 SQLite 数据库路径
cache_ttl = 30 # Token缓存有效期(秒)
max_cache_size = 1000 # 最大缓存Token数
身份验证方法
支持多种身份验证方法,以兼容各种客户端:
Bearer Token(标准版)
curl -H "Authorization: Bearer $Token" http://localhost:8000/api/v1/query
Token Header(InfluxDB 2.x 样式)
curl -H "Authorization: Token $Token" http://localhost:8000/api/v1/query
API Key Header
curl -H "x-api-key: $Token" http://localhost:8000/api/v1/query
查询参数(InfluxDB 1.x 样式)
兼容 InfluxDB 1.x 客户端:
curl "http://localhost:8000/write?db=mydb&p=$Token" -d 'cpu,host=server01 usage=45.2'
Token 管理
所有Token管理接口都需要管理员身份验证。
Token 创建
curl -X POST "http://localhost:8000/api/v1/auth/tokens" \
-H "Authorization: Bearer ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-service",
"description": "Token for production service",
"is_admin": false
}'
{
"id": "abc123",
"name": "my-service",
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"is_admin": false,
"created_at": "2026-01-15T10:30:00Z"
}
Token无法保存
Token值仅在创建时返回一次。请妥善保管,之后无法找回。
Token 列表
curl "http://localhost:8000/api/v1/auth/tokens" \
-H "Authorization: Bearer ADMIN_TOKEN"
Token 替换
在保持Token ID 和权限不变的情况下,生成新的Token值:
curl -X POST "http://localhost:8000/api/v1/auth/tokens/abc123/rotate" \
-H "Authorization: Bearer ADMIN_TOKEN"
Token 失效
立即使Token失效:
curl -X POST "http://localhost:8000/api/v1/auth/tokens/abc123/revoke" \
-H "Authorization: Bearer ADMIN_TOKEN"
Token 删除
永久删除Token:
curl -X DELETE "http://localhost:8000/api/v1/auth/tokens/abc123" \
-H "Authorization: Bearer ADMIN_TOKEN"
验证 Token
验证接口是公开的(无需身份验证),用于检查Token是否有效:
curl -H "Authorization: Bearer $Token" \
"http://localhost:8000/api/v1/auth/verify"
{
"valid": true,
"token_info": {
"id": "abc123",
"name": "my-service",
"is_admin": false
},
"permissions": []
}
Token 缓存
IEDB 将已验证的Token缓存在内存中,以避免每次请求都进行 SQLite 查询。这对于高吞吐量数据写入至关重要。
缓存统计信息
curl "http://localhost:8000/api/v1/auth/cache/stats" \
-H "Authorization: Bearer ADMIN_TOKEN"
使缓存失效。
强制所有缓存的Token使用 SQLite 重新验证:
curl -X POST "http://localhost:8000/api/v1/auth/cache/invalidate" \
-H "Authorization: Bearer ADMIN_TOKEN"
何时无效
对于大多数操作(撤销、删除、替换),缓存失效是自动的。只有当您直接修改 SQLite 数据库时,才需要手动失效缓存。
公共接口
这些接口不需要身份验证:
GET /health-- 健康检查GET /ready-- K8S准备GET /metrics-- Promthus 指标GET /api/v1/auth/verify-- Token 验证
API 接口参考
| 方法 | 端点 | 权限 | 描述 |
|---|---|---|---|
| GET | /api/v1/auth/verify | 公开 | 验证Token有效性 |
| GET | /api/v1/auth/tokens | 管理员 | 列出所有Token |
| POST | /api/v1/auth/tokens | 管理员 | 创建新Token |
| GET | /api/v1/auth/tokens/:id | 管理员 | 获取Token详情 |
| PATCH | /api/v1/auth/tokens/:id | 管理员 | 更新Token元数据 |
| DELETE | /api/v1/auth/tokens/:id | 管理员 | 删除Token |
| POST | /api/v1/auth/tokens/:id/rotate | 管理员 | 替换Token值 |
| POST | /api/v1/auth/tokens/:id/revoke | 管理员 | 撤销Token |
| GET | /api/v1/auth/cache/stats | 管理员 | 查看缓存统计信息 |
| POST | /api/v1/auth/cache/invalidate | 管理员 | 使Token缓存失效 |