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

将Vault配置为OIDC Provider后调用token接口出现HTTP/2协议错误

解决Vault OIDC Provider获取Token时的HTTP/2协议错误

问题场景

按照HashiCorp官方流程配置Vault作为OIDC Provider后,调用token端点获取access token时触发报错。执行的请求命令如下:

BASIC_AUTH_CREDS=$(printf "%s:%s" "$CLIENT_ID" "$CLIENT_SECRET" | base64)

curl \
--request POST \
--header "Authorization: Basic $BASIC_AUTH_CREDS" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d "code=8oeahsnfHI9XYBw7yTrY2fIc9bUMNUwd" \
-d "grant_type=authorization_code" \
--data-urlencode "scope=openid" \
-d "redirect_uri=http://127.0.0.1:9200/v1/auth-methods/oidc:authenticate:callback" \
https://127.0.0.1:8200/v1/identity/oidc/provider/my-provider/token

报错信息:

curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

实用解决步骤

  • 强制使用HTTP/1.1协议:部分环境下Vault API对HTTP/2的兼容性存在问题,给curl添加--http1.1参数禁用HTTP/2支持:
    BASIC_AUTH_CREDS=$(printf "%s:%s" "$CLIENT_ID" "$CLIENT_SECRET" | base64)
    
    curl \
    --http1.1 \
    --request POST \
    --header "Authorization: Basic $BASIC_AUTH_CREDS" \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -d "code=8oeahsnfHI9XYBw7yTrY2fIc9bUMNUwd" \
    -d "grant_type=authorization_code" \
    --data-urlencode "scope=openid" \
    -d "redirect_uri=http://127.0.0.1:9200/v1/auth-methods/oidc:authenticate:callback" \
    https://127.0.0.1:8200/v1/identity/oidc/provider/my-provider/token
    
  • 排查TLS证书问题:如果Vault使用自签名证书,curl可能因证书验证失败触发协议错误,可临时添加--insecure参数跳过验证(生产环境不推荐)。
  • 校验客户端凭证:确认CLIENT_ID和CLIENT_SECRET与Vault中配置的OIDC客户端完全匹配,base64编码过程中没有混入额外空格或换行符。
  • 检查授权码有效性:OIDC授权码仅能使用一次且有时间限制,确认当前使用的code未过期、未被消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:53:13