Keycloak对接Google做令牌交换报Missing form parameter: grant_type错误
问题根因
"error_description": "Missing form parameter: grant_type" 报错核心原因是Keycloak的令牌接口未正确解析到请求中的grant_type表单参数,问题出在请求传参格式,和Keycloak侧的IdP、权限配置无关。
修复步骤
- 修正Postman传参位置:禁止将参数放在
raw标签页以JSON/纯文本格式传递,必须切换到x-www-form-urlencoded标签页填写所有请求参数。Keycloak的/protocol/openid-connect/token端点仅支持解析application/x-www-form-urlencoded编码的表单参数,即便手动把请求头的Content-Type改成对应值,raw栏的内容也不会被自动转成表单编码格式,服务端无法识别参数。 - 不要手动设置Content-Type请求头:选择
x-www-form-urlencoded传参模式后,Postman会自动生成带正确编码边界的Content-Type头,手动填写的请求头缺少边界标识,同样会导致服务端解析表单失败。 - 在
x-www-form-urlencoded栏补全令牌交换的所有必填参数:grant_type:固定取值为urn:ietf:params:oauth:grant-type:token-exchangeclient_id:Keycloak中对应接入客户端的IDclient_secret:若客户端为机密类型,填写对应客户端密钥subject_token:从Google侧获取的有效访问令牌/ID令牌subject_issuer:填写Keycloak后台配置Google身份提供商时设置的别名,需和后台配置完全一致audience(建议填写):目标访问资源对应的客户端ID
验证
完成上述配置后重新发起请求,即可正常进入令牌交换流程,不会再触发缺少grant_type参数的报错。
内容的提问来源于stack exchange,提问作者Narashimhaa
相关产品推荐
相关产品推荐

