Oauth2-basic 插件 和 pkce

大家好,

我是 oauth2-basic 插件的新手,在阅读了文档和源代码后,我仍然找不到问题的答案。

  • oauth2-basic 插件是否支持 PKCE?
  • 如果支持,如何启用它?
  • 如果不支持,我该如何修改 oauth2-basic 插件的代码以使用 PKCE?

Omniauth GitHub 页面 README 指出,我应该能够在我的 Omniauth 策略中将 pkce 选项设置为 true。然而,我在 oauth2-basic 插件代码中尝试了此更改,但并未向 authorize_url 发送任何 code challenge。有什么建议吗?

提前感谢

我正在协助的一个社区要求支持 PKCE,因此我在此跟进。

在此之前,我还没有看到任何关于此的信息,但通过查阅相关文档,它似乎是原生应用和 SPA 的主要驱动因素:

原生应用

  • 无法安全地存储客户端密钥。反编译应用程序将暴露客户端密钥,该密钥与应用程序绑定,并且对所有用户和设备都相同
  • 可能会使用自定义 URL 方案来捕获重定向(例如,MyApp://),这可能会允许恶意应用程序从您的授权服务器接收授权码

单页应用

  • 无法安全地存储客户端密钥,因为它们的整个源代码都可以在浏览器中访问

这两种情况都不适用于本场景;Discourse 服务器持有密钥。

Animated GIF