📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

注意:DELETE /_security/api_key API 在当前版本的 Easysearch 中尚未实现服务器端。

API 说明 #

DELETE /_security/api_key 端点在当前 Easysearch 版本中未实现服务器端 REST 处理器。

虽然客户端库中存在相关的数据结构类(如 ApiKey.java),但服务器端缺少相应的 REST 处理器来处理 API 密钥的删除请求。

预期 API 格式 #

DELETE /_security/api_key/{id}

预期参数 #

路径参数 #

参数类型是否必填默认值描述
{id}String-要删除的 API 密钥的唯一标识符

查询参数 #

参数类型是否必填默认值描述
refreshBooleantrue是否立即刷新相关索引

预期请求示例 #

删除指定 API 密钥 #

DELETE /_security/api_key/VuaCfGcBCdbkQm-e5aOx

删除并立即刷新 #

DELETE /_security/api_key/VuaCfGcBCdbkQm-e5aOx?refresh=true

预期响应格式 #

成功响应 #

{
  "found": true,
  "id": "VuaCfGcBCdbkQm-e5aOx",
  "name": "my-api-key"
}

API 密钥不存在 #

{
  "found": false,
  "id": "VuaCfGcBCdbkQm-e5aOx"
}

响应字段说明 #

字段类型描述
foundBoolean是否找到并删除了 API 密钥
idStringAPI 密钥的唯一标识符
nameStringAPI 密钥的名称(如果存在)

当前状态 #

在 Easysearch 当前版本中:

  • 客户端支持:存在 ApiKey 类定义
  • 服务器端实现:未实现 REST 处理器
  • 安全模块SecurityRestApiActions.java 中未包含 API 密钥处理器

相关文件 #

客户端类 #

  • client/rest-high-level/src/main/java/org/easysearch/client/security/support/ApiKey.java
  • client/rest-high-level/src/main/java/org/easysearch/client/security/GetApiKeyResponse.java
  • client/rest-high-level/src/main/java/org/easysearch/client/security/CreateApiKeyResponse.java

服务器端(缺少实现) #

  • modules/security/src/main/java/com/infinilabs/security/dlic/rest/api/SecurityRestApiActions.java

API 密钥结构 #

根据客户端类 ApiKey 的定义:

字段类型描述
nameStringAPI 密钥的名称
idStringAPI 密钥的唯一标识符
creationInstantAPI 密钥的创建时间
expirationInstantAPI 密钥的过期时间
invalidatedBooleanAPI 密钥是否已被失效
usernameString关联的用户名
realmString认证领域名称

实现建议 #

如需实现此功能,需要:

  1. 创建新的 ApiKeyAction 类,继承 AbstractApiAction
  2. 将其添加到 SecurityRestApiActions.getHandler() 方法
  3. 实现 handleDelete 方法处理 API 密钥删除
  4. 定义适当的验证和错误处理
  5. 实现密钥失效和清理机制

替代方案 #

目前可以使用以下替代方案管理认证:

  • 用户管理:通过删除用户来撤销其所有认证方式
  • 令牌失效:使用令牌黑名单机制(如果已实现)
  • 密码更改:强制更改用户密码

注意事项 #

  1. 未实现功能:该 API 当前不可用
  2. 不可恢复:删除后 API 密钥无法恢复
  3. 立即生效:删除后该密钥将立即无法使用
  4. 审计日志:建议记录删除操作用于审计

参考文档 #

如需实现此功能,可以参考:

  • Elasticsearch 的 API 密钥管理功能
  • OpenSearch 的 API 密钥实现