我正在浏览Oauth2文档,并认为这是一种宽容的安全方式,因此我试图通过特殊的方案来实现JWT令牌,如图片中用于与Web API进行通信的移动应用程序。我不喜欢Oauth2刷新标记的想法,因为它们可能会被盗取,并允许(由合法和恶意用户)并行使用(除非您通过旋转它们来实现盗窃检测(在每次请求时刷新刷新标记),为什么使用他们呢?通过JWT进行应用程序认证和授权
的身份验证流程,工作原理:
- 用户与凭据登录享有20分钟的寿命的JWT。
- 过期后,通过点击db检查它是否被列入黑名单(relogin),如果不检查它是否用于生成新的令牌,则会刷新jwt。
- 如果它从未用于刷新,则会被接受并用于发布低级别访问令牌。
- 如果令牌之前使用,或有不同的客户端+设备+用户超过其母公司提供了认证检查(密码或锁屏密码)
- 如果获得通过,该检查发出新的第一级令牌列入黑名单的所有父和db上的孩子,就像新的第一个用户登录一样。
- 如果锁定屏幕失败,用户将看到登录屏幕。
的问题是:
- 什么是可能的安全漏洞? (我发现了两个用例:被盗的有效访问令牌与Oauth令牌持续20分钟相同,在这里没有任何损失,而且被盗的睡眠令牌:用户没有登录说7天,令牌被盗用并被使用直到用户再次登录或令牌链在持续3个月后恢复 - 我们的政策 - 此盗窃的机会很小,因为令牌必须在用户在应用上发出的最后一个请求截获,比偷取Oauth2更新令牌更苗条)
- 什么是用户体验攻击者可以在此计划上针对应用程序引发问题?
您的使用案例:被盗手机会让恶意用户抓住所有持久登录应用程序并冒充你:facebook,google ....所以这个漏洞很常见,这就是为什么在这些应用程序仪表板上撤销设备的原因。 –