在使用PKCE的OAuth2中,为什么必须在响应中加密质询?

0h4hbjxa  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(126)

在www.example.com中https://www.rfc-editor.org/rfc/rfc7636#section-4.4指出,可以通过将质询包括在代码中来将其与授权代码相关联,但仅以加密形式(或者将其存储在服务器上,这与我的问题无关)。为什么必须加密?
对我来说,挑战应该是不可能改变的,因为随后对访问代码的请求可能包括从未呈现给服务器的新挑战,并且攻击者方便地准备了代码验证器。然而,为了防止修改,在授权代码中包括签名就足够了--不需要加密询问。
第4.4节还说“服务器不得以其他实体可以提取的形式在客户端请求中包含“code_challenge”值”。假设请求者或第三方可以提取代码质询--为什么这是有害的?请求者已经知道代码质询,第三方攻击者无法从中派生代码验证器。

nwsw7zdq

nwsw7zdq1#

为什么必须加密?
使用PKCE实现时,授权服务器没有客户端机密。它使用code_challengecode_verifier的加密形式)。可以将code_verifier视为client_secret。由于client_secret不能通过前端通道发送,因此我们对其进行加密。生成authorization_code后,请参阅第4.6节授权服务器如何验证它。这里,authorization_codecode_challenge通过反向通道发送。

相关问题