【发布时间】:2021-01-19 15:53:37
【问题描述】:
我正在开发一个使用 Angular 9 作为前端从 Django API 获取数据的网络应用程序。 身份验证方案基于 JSON Web Token。在登录过程中,Angular 向 API 发送用户名-密码对。如果该数据正确,API 会使用一对 JSON Web 令牌进行响应:一个用于访问,另一个用于刷新。如果没有有效的访问令牌,API 将不允许您获取其数据。
我担心将这些令牌存储在客户端的什么位置。
在网络上搜索,我发现记忆令牌的首选方法之一是 cookies,实际上这是我迄今为止实现的方式。但是有几篇文章说,为了对 XSRF 攻击提供一定程度的安全性,应该使用 httpOnly 标志设置 cookie。没关系,但是使用 JWT 进行身份验证的优势之一是可以将用户定义的 声明 附加到令牌的有效负载中。例如,我正在考虑将用户权限添加为令牌声明,以允许或拒绝对客户端界面的给定部分的访问。但是如果token设置为httpOnly,就没有办法访问payload了,不是吗?
此外,我想了解一下 Cookie 在 Web 应用程序中的工作原理。据我所知,服务器应该使用Set-Cookie 标头设置cookie。但在我的应用程序中,cookie 是由 javascript 代码设置的,利用了在客户端浏览器中运行的 ngx-cookie-service 库。鉴于没有服务器知道它们,这些 cookie 被发送到哪里?它们是否随着每个请求附加到为 Angular 框架提供支持的 node Web 服务器?例如,每次我向localhost:4200/home/students 发出请求时,cookie 中存储的令牌都会随之发送?在每个请求上都有旅行令牌不是安全风险吗?
【问题讨论】:
标签: angular authentication cookies web-applications jwt