OAuth2:使用 PKCE 而不是 client_secret

JW.*_*JW. 2 oauth-2.0 pkce

我有一个使用 OAuth2 的隐式授权进行身份验证的网络应用程序。

我希望能够使用刷新令牌长时间保持会话处于活动状态。但由于我无法安全地将 client_secret 存储在 Web 应用程序中,因此我无法使用传统的Authorization Code grant

使用PKCE代替 client_secret是否安全,或者我这样做是否会失去一定程度的安全性?

jwi*_*eke 7

是的。虽然 PKCE 比不使用它更安全;带有 PKCE 的隐式授权仍然留下访问令牌可能会暴露给资源所有者和驻留在同一设备上的其他应用程序。

PKCE 主要防止攻击者在不受传输层安全性 (TLS) 保护的通信路径中拦截从授权端点返回的授权代码。

隐式流仅适用于基于浏览器或 JavaScript 的 OAuth 客户端应用程序,而非移动设备或其他可以使用授权代码授权的应用程序