将JWT令牌存储在cookie中

时间:2015-06-29 06:35:29

标签: asp.net-mvc access-token

这是我的设置:

  • 1个认证服务器,在成功时发出JWT令牌 认证
  • 多个API资源服务器,提供信息(当用户 经过验证)。

现在我想构建我的ASP.NET MVC前端。是否可以获取我在认证后收到的令牌,并将其放入cookie中,以便我可以使用我需要进行的每个安全呼叫来访问它?我使用RestSharp DLL进行我的http调用。如果它有安全漏洞,那么我应该在哪里存储我的令牌?

我会将此代码用于cookie:

            System.Web.HttpContext.Current.Response.Cookies.Add(new System.Web.HttpCookie("Token")
        {
            Value = token.access_token,
            HttpOnly = true
        });

2 个答案:

答案 0 :(得分:11)

你走在正确的道路上! cookie应始终具有HttpOnly标志,设置此标志将阻止JavaScript环境(在Web浏览器中)访问cookie。这是在浏览器中防止XSS攻击的最佳方法。

您还应该在生产中使用Secure标记,以确保Cookie仅通过HTTPS发送。

您还需要阻止CSRF次攻击。这通常通过在另一个cookie中设置一个值来完成,该值必须在每个请求中提供。

我在Stormpath工作,我们已经写了很多关于前端安全性的信息。这两篇文章可能有助于理解所有方面:

Token Based Authentication for Single Page Apps (SPAs)

https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/

答案 1 :(得分:0)

您是否正在制作自己的JWT?

如果是,您应该考虑使用基于非对称加密的签名算法,例如“RS256”或“RS512” - 这样您就可以在不共享私密的情况下验证客户端应用程序中的声明。

你真的需要将JWT传递给Cookie吗?

在Cookie中引入随机ID可能更安全,Cookie会引用JWT访问令牌,并在为您的网络应用程序提供服务的服务器上执行解引用魔术。