API7 网关 AI Agent Skill:hmac-auth 插件
hmac-auth 插件使用 HMAC(Hash-based Message Authentication Code)签名对请求进行身份认证。客户端会基于请求方法、路径、日期以及可选请求头/请求体计算 HMAC 签名,然后将其放入 Authorization 请求头中。API7 企业版会在服务端重新计算签名并校验其是否匹配。这种方式无需在线路上传输密钥,即可验证请求完整性。
适用场景
- 请求完整性校验(防止 API 调用被篡改)
- 适用于双方共享密钥的服务间身份认证
- 需要校验请求体完整性的 API
- 令牌或密码不应出现在请求中的环境
插件配置参考(路由/服务)
| 字段 | 类型 | 是否必填 | 默认值 | 说明 |
|---|
allowed_algorithms | array | 否 | ["hmac-sha1","hmac-sha256","hmac-sha512"] | 允许使用的 HMAC 算法 |
clock_skew | integer | 否 | 300 | 客户端与服务端之间允许的最大时间差,单位秒 |
signed_headers | array | 否 | — | HMAC 签名中要求包含的额外请求头 |
validate_request_body | boolean | 否 | false | 通过 SHA-256 摘要校验请求体完整性 |
hide_credentials | boolean | 否 | false | 转发到上游前移除 Authorization 请求头 |
anonymous_consumer | string | 否 | — | 未通过身份认证的请求所使用的消费者用户名 |
realm | string | 否 | "hmac" | WWW-Authenticate 响应头中的 Realm |
消费者凭证参考
| 字段 | 类型 | 是否必填 | 说明 |
|---|
key_id | string | 是 | 消费者的唯一标识符 |
secret_key | string | 是 | 用于 HMAC 计算的密钥,会在数据库中自动加密 |
分步操作:在路由上启用 hmac-auth