2

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

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

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

4

2 回答 2

7

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

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

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

于 2017-08-29T07:49:52.567 回答
0

使用隐式授权,您既不能使用 PKCE,也不能刷新令牌。如果您想提高安全性,那么您应该为您的 Web 应用程序添加一个后端,该后端可以存储一个client_secret(或使用客户端身份验证的替代方法)。不需要PKCE。

于 2018-02-23T12:11:44.560 回答