Skip to main content
 首页 » 编程设计

c#之跨默认域 (*.azurewebsites.net) 上的 azure web 应用程序的 ASP.NET Core 共享身份 Cookie

2024年01月26日41lhb25

在多个 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 .