缺少参数 code_challenge_method

Posted

技术标签:

【中文标题】缺少参数 code_challenge_method【英文标题】:Missing parameter code_challenge_method 【发布时间】:2022-01-16 18:49:09 【问题描述】:

我正在学习 oauth 2.0 并使用 keycloak 作为授权服务器。每当我发送以下请求时:-

http://localhost:7070/auth/realms/developer/protocol/openid-connect/auth?client_id=tcs&response_type=code&scope=openid profile&redirect_uri=http://localhost:8080/callback&state=zxczczxc232

我收到以下错误:-

http://localhost:8080/callback?error=invalid_request&error_description=Missing+parameter%3A+code_challenge_method&state=zxczczxc232

【问题讨论】:

【参考方案1】:

keycloak 已启用 PKCE,因此,您作为客户端必须发送 code_challenge 作为初始身份验证请求的一部分。

你需要做的是:

    生成随机值 (code_verifier) 计算该值的哈希 (code_challenge) 在您的初始身份验证请求中发送 code_challenge 稍后请求令牌时发送 code_verifier

如下图所示:

【讨论】:

如何禁用PKCE? 要禁用 PKCE,请参阅此处的文档keycloak.org/docs/latest/server_admin/#advanced-settings 但是,今天您应该学习和使用 PKCE,因为它是使用的最佳实践......而且它并不复杂。 如果我的回答解决了您的问题,请随时接受。

以上是关于缺少参数 code_challenge_method的主要内容,如果未能解决你的问题,请参考以下文章

调用jsapi缺少参数$key0$

调用支付jsapi缺少参数是啥意思

“调用中参数'for'缺少参数”

缺少一个参数。 [参数序数=8]

微信支付时显示缺少参数:appId,明明自己已经传过了

Swift 中缺少参数错误的参数