大家好。现在我正在查看通过令牌(oauth2 / jwt-auth 等)进行身份验证的各种库,我不明白一件事:据我所知,最好将所有与安全相关的数据存储在 httpOnly cookie 中。响应中的上述软件包给出access token和refresh token。用js插入httpOnly cookie是不行的。访问令牌应该如何存储在客户端?
应用程序是在没有服务器端的情况下制作的,即完全无状态(stateless)。只有后端 API 和 Vue.js 应用程序可用。如何成为,在哪里存储令牌?
您在这里写道:“应用程序是在没有服务器部分的情况下制作的”。这自动意味着无论您是否使用令牌,您都无法使用 httpOnly cookie。您需要将令牌存储在它工作的地方 - 在 localStorage 或类似的地方。
现在关于安全性。令牌的安全性是通过范围和生命周期的限制来实现的。这些限制同时起作用:范围广泛的令牌往往是短暂的,而范围窄的令牌可以持续很长时间。
就您而言,您需要在获取令牌时请求正确的范围。例如,请求像 users.profile:write 这样的范围并存储这样的令牌不是一个好主意,但 im:read 可以永久存储(例如,我从Slack API获取令牌范围)
如果您需要通过 API 更改应用程序中的帐户安全设置,则最好单独为该操作请求令牌。并在操作后立即忘记而不将其保存在任何地方。