跳到主要内容

身份授权

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缓存失效