【发布时间】:2020-06-02 20:44:08
【问题描述】:
我已经阅读了关于 SO.... 的 MS 说明和几个线程,但我没有想法。我有 2 个 .net core 3.0 Web 应用程序。我使用 Okta 进行身份管理,并希望能够在我的应用程序之间进行 SSO - 这一切都可以在本地正常运行。
但是,当我将它部署到 Azure 中的开发环境时,它不起作用,因为站点 1 写入的 cookie 无法被站点 2 读取。我想,哦,当然,解决方案是修复 cookie 域。但这也没有用。
这就是我所在的地方:
站点一:dev-app.mysite.com 站点二:dev.mysite.com
如果我没有明确设置 cookie 域,站点 1 将写入 cookie,并将 dev-app.mysite.com 作为 cookie。
如果我 确实 将 cookie 域明确设置为“.mysite.com”(根据文档),那么我有一个更大的问题 - 即站点 1 在全部!
这是相关代码(两个应用程序相同)
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
options.Secure = CookieSecurePolicy.Always;
});
以及我设置身份验证 cookie 的位置:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.LoginPath = new PathString("/Account/SignIn");
options.Cookie.Name = cookieName;
options.Cookie.Domain = cookieDomain;
})
.AddOktaMvc(oktaMvcOptions);
请注意,我已经处理了 cookie 应用程序名称、共享数据保护密钥等。唯一阻碍这一点的是域问题。
【问题讨论】:
标签: asp.net-core cookies