OAuth2:使用PKCE而不是client_secret

时间:2017-08-28 17:24:02

标签: oauth-2.0 pkce

我有一个使用OAuth2' Implicit Grant进行身份验证的网络应用。

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

使用PKCE代替client_secret是安全的,还是我在这样做时失去了某种程度的安全性?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

使用隐式授权,您既不能使用PKCE,也不能使用刷新令牌。如果要提高安全性,则应在Web应用程序中添加后端,该后端可以存储client_secret(或使用其他客户端身份验证方法)。不需要PKCE。