PKCE规范定义了两种方法,S256和plain,前者使用 在此示例中,它是自 Auth0 以来唯一支持的一个 后者不鼓励。
为什么他们设计得如此
plain
甚至是一个可以使用的有效值?
如果您使用
plain
,那么如果授权码被盗,code_verifier
也可能被盗,因为它与 code_challenge
的值相同。
我完全不明白这如何增加任何安全性。
规格说明:
如果客户端能够使用“S256”,则必须使用“S256”,因为
“S256”是服务器上强制实施(MTI)的。客户是
仅当他们不能支持“S256”时才允许使用“plain”
技术原因并通过带外配置知道
服务器支持“普通”。简单的转换是为了与现有的兼容
部署以及无法使用 S256 的受限环境
转变。
所以我猜它只是出于向后兼容性的原因而出现在规范中。