--- title: "查询API密钥" date: 2026-01-27 lastmod: 2026-01-27 description: "查询API密钥信息" tags: ["安全", "API密钥", "认证"] summary: "注意:GET /_security/api_key API 在当前版本的 Easysearch 中尚未实现服务器端。 API 说明 # GET /_security/api_key 端点在当前 Easysearch 版本中未实现服务器端 REST 处理器。 虽然客户端库中存在相关的数据结构类(如 GetApiKeyResponse.java 和 ApiKey.java),但服务器端缺少相应的 REST 处理器来处理 API 密钥的查询请求。 预期 API 格式 # GET /_security/api_key GET /_security/api_key/{id} 预期参数 # 路径参数 # 参数 类型 是否必填 默认值 描述 {id} String 否 - API 密钥的唯一标识符 预期响应格式 # 根据客户端类 GetApiKeyResponse 的定义,响应格式可能如下: 查询所有 API 密钥 # { "api_keys": [ { "name": "my-api-key", "id": "VuaCfGcBCdbkQm-e5aOx", "creation": 1635724800000, "expiration": 1638316800000, "invalidated": false, "username": "admin", "realm": "native" } ] } 查询指定 API 密钥 # { "name": "my-api-key", "id": "VuaCfGcBCdbkQm-e5aOx", "creation": 1635724800000, "expiration": 1638316800000, "invalidated": false, "username": "admin", "realm": "native" } API 密钥结构说明 # 字段 类型 描述 name String API 密钥的名称 id String API 密钥的唯一标识符 creation Long/DateTime API 密钥的创建时间 expiration Long/DateTime API 密钥的过期时间(可选) invalidated Boolean API 密钥是否已被失效 username String 关联的用户名 realm String 认证领域名称 当前状态 # 在 Easysearch 当前版本中:" --- **注意**:GET /_security/api_key API 在当前版本的 Easysearch 中**尚未实现**服务器端。 ## API 说明 `GET /_security/api_key` 端点在当前 Easysearch 版本中未实现服务器端 REST 处理器。 虽然客户端库中存在相关的数据结构类(如 `GetApiKeyResponse.java` 和 `ApiKey.java`),但服务器端缺少相应的 REST 处理器来处理 API 密钥的查询请求。 ## 预期 API 格式 ``` GET /_security/api_key GET /_security/api_key/{id} ``` ## 预期参数 ### 路径参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `{id}` | String | 否 | - | API 密钥的唯一标识符 | ## 预期响应格式 根据客户端类 `GetApiKeyResponse` 的定义,响应格式可能如下: ### 查询所有 API 密钥 ```json { "api_keys": [ { "name": "my-api-key", "id": "VuaCfGcBCdbkQm-e5aOx", "creation": 1635724800000, "expiration": 1638316800000, "invalidated": false, "username": "admin", "realm": "native" } ] } ``` ### 查询指定 API 密钥 ```json { "name": "my-api-key", "id": "VuaCfGcBCdbkQm-e5aOx", "creation": 1635724800000, "expiration": 1638316800000, "invalidated": false, "username": "admin", "realm": "native" } ``` ## API 密钥结构说明 | 字段 | 类型 | 描述 | |------|------|------| | `name` | String | API 密钥的名称 | | `id` | String | API 密钥的唯一标识符 | | `creation` | Long/DateTime | API 密钥的创建时间 | | `expiration` | Long/DateTime | API 密钥的过期时间(可选) | | `invalidated` | Boolean | API 密钥是否已被失效 | | `username` | String | 关联的用户名 | | `realm` | String | 认证领域名称 | ## 当前状态 在 Easysearch 当前版本中: - **客户端支持**:存在完整的客户端类定义 - **服务器端实现**:未实现 REST 处理器 - **安全模块**:`SecurityRestApiActions.java` 中未包含 API 密钥处理器 ## 相关文件 ### 客户端类 - `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` - `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/ClearApiKeyCacheRequest.java` ### 服务器端(缺少实现) - `modules/security/src/main/java/com/infinilabs/security/dlic/rest/api/SecurityRestApiActions.java` ## 替代方案 目前可以使用以下替代方案进行认证: - **基本认证**:使用用户名和密码 - **Bearer Token**:使用 JWT 令牌 - **SSL/TLS 证书**:基于证书的认证 ## 注意事项 1. **未实现功能**:该 API 当前不可用 2. **客户端准备**:客户端已准备好支持此功能 3. **未来支持**:可能在后续版本中实现 ## 参考文档 如需实现此功能,可以参考: - Elasticsearch 的 API 密钥管理功能 - OpenSearch 的 API 密钥实现