【发布时间】:2018-12-29 23:55:58
【问题描述】:
背景
我正在查看 OAuth 2.0 隐式授权流程,其中用户被重定向到身份验证服务,并将 JWT 令牌发送回单页应用程序 (SPA)。令牌存储在 cookie 或本地存储中,在我看到的示例中,应用程序将根据是否可以在存储中找到令牌来隐藏/显示某些页面。
问题
问题在于,在所有示例中(来自服务提供商的官方示例),我能够手动将任何随机但格式正确的令牌添加到浏览器的本地存储中,并可以访问“安全”页面。
有人向我解释说,您无法在 SPA 中验证令牌,因为这需要公开客户端密码,并且您应该在 API 服务器上验证令牌。这意味着您可以“隐藏”这些页面,但如果有人愿意,很容易看到它们。话虽如此,您不太可能造成任何真正的损害,因为任何数据检索或操作都需要通过 API 服务器,并且应该在那里验证令牌。
这并不是一个真正的漏洞,但我看到的文档和示例并没有明确涵盖这个细微差别,我认为它可能会导致天真的程序员(比如我自己)认为某些页面是完全安全的,但它不是严格意义上的案例。
问题
如果比我更了解情况的人确认这确实是 SPA 身份验证的工作方式,将不胜感激?
【问题讨论】:
标签: reactjs authentication oauth-2.0 auth0