2015-06-29 162 views
6

商店JWT令牌这是我的设置:其中给出了对全成 认证令牌JWT在饼干

  • 1认证服务器。
  • 提供信息的多个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 
     }); 
+0

请确保它也是HTTPS只有通过添加安全标志! – Tilo

+0

[Answer](http://stackoverflow.com/a/40376819/204699)与在浏览器应用程序中存储令牌的相关问题可能包含有用的附加信息。 –

回答

8

你是在正确的道路上!该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/

+0

非常感谢您的信息! – Kaizer

+2

感谢您的信息。任何关于.NET Identity 2.0集成的计划? –

+0

@andrea:这是一个后期后续,但我只写了一篇关于ASP.NET + Stormpath的文章:https://stormpath.com/blog/10-minute-asp-net-user-authentication –

0

你生成自己的JWTs?

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

你真的需要将智威汤逊传入Cookie吗?

只需在您的Cookie中放入一个随机ID,它会引用JWT访问令牌并在为您的Web-app提供服务的服务器上执行取消引用魔术可能会更安全。

+0

你可以提供一些代码,你如何在cookie中存储jwt?假设'string token = YOUR_TOKEN',并且你正在编写启动类 – sepehr