【发布时间】:2014-05-26 07:16:38
【问题描述】:
从我们在 Azure 中作为 Web 角色托管的开发/测试环境进行了大量调试后,Chrome 34 突然停止工作,我们意识到 Chrome 忽略了包含域名为“.cloudapp”的 cookie 的 set-cookie 响应。 net”(Azure 中云服务的默认公共 Microsoft 域)。我们选择这个名称的原因是能够在需要来自同一个 JavaScript 应用程序的安全请求的不同云服务之间生成 CORS 请求。这意味着从像 http://example.cloudapp.net 这样的 MVC 站点获取身份验证 cookie,并在像 http://exampleServices.cloudapp.net 这样的另一个 Web 角色中调用安全的 WebApi REST 服务(仅适用于具有相同域名的 cookie)
以下是来自生成身份验证 cookie 的云服务的身份验证响应示例:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Origin:http://example.cloudapp.net
Cache-Control:private
Content-Length:31
Content-Type:application/json; charset=utf-8
Date:Fri, 11 Apr 2014 20:21:20 GMT
Server:Microsoft-IIS/8.0
Set-Cookie:.COOKIENAME=XXXXXXXXXXXXXXXXXXXX; domain=.cloudapp.net; path=/; HttpOnly
我们面临的问题是 cookie 在 Chrome34 中以该域名丢弃,因此任何其他请求都没有经过身份验证。 我们可以购买公共域并在 azure 中设置我们的云服务,但我想知道是否有解决此问题的方法。
【问题讨论】:
-
这感觉是个好主意 - 任何人都可以在 .cloudapp.net 上设置/读取任何 cookie - 因此,如果您尝试在该域上设置身份验证厨师,每个人都可以读取它们(或设置假的)。 (“每个人”指在 cloudapp.net 上创建站点的人)。
标签: asp.net-mvc google-chrome cookies azure-web-roles