在多个 Web 应用程序之间共享身份 Cookie(使用 ASP.NET Core v2)时遇到问题
在我的开发环境中,cookie 是自动共享的(因为它是 localhost)——而且工作正常!
在处理 MS Azure 时,我尝试将 cookie 域设置为 .azurewebsites.net - 以允许两个 Web 应用程序(例如 app1.azurewebsites.net和 app2.azurewebsites.net) 共享 cookie。
像这样使用 cookie 配置(缩写):
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Domain = ".azurewebsites.net";
}
}
但是,当我将主站点(从登录生成 cookie 的站点)部署到 Azure 时,我什至无法登录。输入用户名/密码(或社交登录)后,.AspNetCore.Application.Identity cookie 甚至不会返回
我也尝试过这里的解决方案:https://stackoverflow.com/a/44310683/1025394 没有成功
问题是:是否可能在 Azure 端进行过滤?阻止我为 .azurewebsites.net 设置 cookie?也许出于安全目的?
请您参考如下方法:
However, when I deploy the main site (the one that generates cookies from logins) to Azure, I can't even login. The .AspNetCore.Application.Identity cookie doesn't even get returned after entering username/password (or social logins)
我在网上搜索了一下,发现有些域名出于安全考虑不允许创建cookie。 Azure Cloud 的域如下所示:
azurewebsites.net
azure-mobile.net
cloudapp.net
您可以找到的域的详细列表 here .
此外,如果您想在多个网络应用程序之间共享 cookie,您可以为您的网络应用程序映射自定义域名(例如 app1.yourwebsite.com、app2.yourwebsite.com ) 并将 options.Cookie.Domain 设置为 .yourwebsite.com,有关映射自定义域的详细信息,您可以关注 here .此外,您需要 configure data protection为您的多个网络应用程序使用相同的加密 key 。另外,你可以关注这个类似的issue .
