在JS web应用程序中,如何确保具有访问令牌的恶意用户无法刷新它
In JS web apps, how is it ensured that a malicious user with the access token will not be able to refresh it?
我发现用JS应用程序确保OAuth的安全非常烦人:(
让我们假设我是Alice,一个合法用户,使用OAuth服务器的JS单页应用程序客户端。我已登录并收到我的令牌(访问和刷新)。
不幸的是,在某个时刻,我仍然有效的访问令牌和刷新令牌被恶意用户Bob检索到(请注意,没有理由只检索刷新令牌,因为OAuth服务器以相同的方式发回这两个令牌)。
好吧,所以我从这个问题中了解到,好吧,这没那么重要,因为邪恶的Bob只有有限的时间做坏事,因为代币的寿命很短。
现在让我们假设令牌已经过期。理论上,对于Bob来说,一切都应该结束了。
但我不明白现在是什么阻止了Bob请求新令牌。Alice有什么,而Bob没有,所以只有爱丽丝才能获得新的访问令牌?
现在让我们考虑一下稍微不同的客户端配置:仍然有一个JS web应用程序,但这次实际的OAuth客户端是JS客户端向其发出请求的PHP后端。这个PHP后端充当一种代理,与任何OAuth客户机一样,向OAuth服务器发出/转发请求。
在这种情况下,刷新令牌可能由后端保密,Bob将只检索访问令牌。但是,在这种情况下,除了这个现已过期的访问令牌之外,Bob确实知道,Alice可以向后端提供什么数据,以便区分她和Bob,从而只为Alice执行刷新过程?
对于JavaScript应用程序(SPAs),您应该使用隐式授予,它不支持刷新令牌。基本上,您的用户被重定向到身份验证服务器,登录并获取访问令牌。当访问令牌过期时,他们需要向身份验证服务器重新进行身份验证。
由于您不能在JavaScript应用程序中保守秘密,因此没有客户端ID或秘密:
隐式授予类型不包括客户端身份验证,并且
依赖于资源所有者的存在和
的注册重定向URI。
- 使用Javascript获取Twitter访问令牌
- FB.login访问令牌facebook javascript SDK
- Phonegap:获取访问令牌时出现LinkedIn登录错误
- 访问令牌和响应数据
- 访问令牌facebook未激活
- OAuth和访问令牌
- 如何安全地获取&使用Facebook应用程序访问令牌发送通知使用PHP&Javascript
- 使用Javascript向ID数组发送通知时出现Facebook访问令牌错误
- 如何使用密码和用户名从 bitly 获取访问令牌
- Facebook Javascript SDK:发布到提要时验证访问令牌时出错
- Axios CORS 问题与 Github oauth 未获取访问令牌
- 在 js sdk 中手动设置访问令牌
- 如何使用访问令牌与Facebook Graph API
- 打开图形:Java脚本:必须使用活动访问令牌来查询有关当前用户的信息
- 在angularjs或nodejs中获取Pocket访问令牌
- 从网页在amazoncognito中注册Facebook访问令牌
- 授权客户端JS API调用Google'的具有现有访问令牌的gap库
- 使用Javascript SDK时,我需要传递访问令牌吗
- 必须使用活动访问令牌来查询有关具有打开图的当前用户的信息
- 在JS web应用程序中,如何确保具有访问令牌的恶意用户无法刷新它