You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kong配置HMAC认证后HTTP请求正常HTTPS返回401未授权如何解决

问题描述

我参照Kong官方文档进行相关配置
hmac doc
我创建了一条HTTP路由,使用HTTP协议请求授权API时,得到200 OK的正常响应。
我另外创建了一条HTTPS路由,使用HTTPS协议请求授权API时,返回401未授权错误。
i add credential and i make an authorized request
我已正确添加凭证并发起合法授权请求,目前十分困惑为何HTTP请求正常但HTTPS请求提示未授权,恳请大家帮忙排查解决。


排查解决方案

  • 校验路由的strip_uri配置是否匹配签名计算逻辑:如果HTTPS路由配置了自定义路径前缀,且开启了strip_uri,请求到达上游时的实际路径会和你计算签名时用的路径不一致,直接导致签名校验失败。确认HTTP和HTTPS两条路由的strip_uri配置是否完全一致,签名时使用的路径和网关实际转发的路径完全对齐。
  • 核对Host头的签名规则:HTTPS请求默认端口为443,HTTP为80,如果你的HMAC配置要求校验Host头,注意确认签名计算时使用的Host值是否带端口,和实际发请求时携带的Host头完全一致,哪怕是协议默认端口也要保持两边对齐。
  • 关闭HTTPS路由的request_buffering配置测试:如果开启了请求缓冲,大请求会被Kong分片处理,HMAC插件无法读取完整请求体计算签名,会直接返回401。可以临时为HTTPS路由关闭该配置,验证是否可以正常鉴权。
  • 检查HTTPS请求是否携带额外请求头:部分客户端发送HTTPS请求时会默认追加X-Forwarded-Proto、X-Forwarded-Port等头字段,如果你的HMAC配置要求校验所有请求头,这些额外未参与签名计算的头会直接导致校验失败。可以抓包对比HTTP和HTTPS请求的头差异,确认所有参与校验的头都已经加入签名计算。
  • 核对请求体校验逻辑:如果开启了validate_request_body配置,确认HTTPS请求的请求体没有被网关层修改编码、追加字段等,保证签名时计算的请求体哈希和网关收到的请求体哈希完全一致。

内容的提问来源于stack exchange,提问作者favor ziyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:36:03