承载和Cookie身份验证

时间:2014-08-24 19:29:13

标签: c# asp.net-mvc authentication asp.net-web-api asp.net-mvc-5

我有两个webprojects:MyApp和Api.MyApp。 MyApp是MVC5应用程序,Api.MyApp是MVC WebAPI应用程序。

MyApp是一个富客户端应用程序,可以在大多数操作中调用API项目。对于授权,我正在为web api使用Bearer令牌,但我还想要一个cookie 所以我可以在主MyApp MVC项目中保护某些路由。

要获得持有人令牌,我打电话给" http://api.myapp/token"我可以将这个持有者令牌扔进一个cookie并让MVC项目识别它,或者我必须发送2个单独的调用,1到api获取持票人令牌,1到mvc应用程序获取cookie。这似乎有点多余,有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

假设您的应用程序正在响应以下内容:

  • api.example.com
  • www.example.com

用户通过www.example.com访问您的网站并提供其凭据。然后,您的应用程序向api.example.com发出AJAX调用以获取令牌。你现在有几个选择:

  1. api.example.com返回令牌以及Cookie,域名设置为.example.com
  2. api.example.com返回令牌,客户端脚本将其设置为域名设置为.example.com的cookie
  3. 如果您这样做,那么API和客户端应用程序都应该可以访问基于cookie的令牌。

    如果您不使用.Net auth令牌,则可能必须根据持票人cookie推出自己的授权机制。

    但是,如果您使用的是Intranet类型域(即http://myapp/http://api.myapp),那么您必须使用选项2并使用cookie的默认域(您无法设置在域中只有一个句点的cookie,否则我可以将其设置为“.com”并在任何地方挥霍数据。)