应该在ASP.Net Core

时间:2017-05-30 10:04:19

标签: c# asp.net-mvc authentication asp.net-core bearer-token

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

我现在的问题是:

  

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

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

1 个答案:

答案 0 :(得分:5)

  

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

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

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

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