应该在ASP.Net Core中将身份验证令牌存储在何处

Mat*_*ger 10 c# authentication asp.net-mvc bearer-token asp.net-core

我的应用程序有一个API部分和一个网站部分.在网站上,用户可以登录并从API获取JWT承载令牌.

我现在的问题是:

我应该在哪里存储该令牌?

有人说,将它存储在Cookie中(而其他人说"不要,因为CSRF"),有人说HTML5 Web存储,有人说使用Session(而其他人说,"不要在ASP Net Core中使用Sessions")和我看到一篇文章,其中某人将auth-token存储在数据库中(??).那么,现在正确的地方是什么?

jlv*_*ero 5

具有许多控制器和大量视图的MVC-web应用程序

如果您必须使用令牌来验证对MVC应用程序的每个请求,我认为最好的选择是将其存储在会话cookie中,因为如果没有,Web浏览器将不会在每个请求中发送令牌authomaticaly,它将是屁股疼.

现在,为了保护cookie和请求:

  • 制作会话cookie(没有到期日期)
  • 尽可能限制cookie的范围(域和路径).
  • 设置安全和HttpOnly的归因.
  • 设置SameSite属性.
  • 如果浏览器不支持SameSite,请使用反CSRF令牌.
  • 设置限制性X-Frame-Options.
  • 不要忘记在每次请求时验证服务器上的JWT签名.
  • 加密JWT令牌以防止泄漏可能导致社交工程的信息.