设置场景
我正在经历一个非常独特的场景,ASPNet.SharedCookie
在代理下我的 IE11 似乎正在消失或改变。我会设置场景:
我们有 2 个网站托管在不同的服务器上,我们称之为:
第一个站点处理身份验证,它检查凭据并为域设置 cookie .mydomain.com
。这在 99% 的场景中都非常有效(我们拥有庞大的用户群)。
问题
我们有 1 个使用 Citrix 的用户,因此他们通过代理访问产品,并且无法控制浏览器版本。他们必须使用 IE11。
所以他们访问 login.mydomain.com,输入他们的凭据,cookie 被验证和设置,然后他们被重定向到 product.mydomain.com。但是,当他们访问该站点时,cookie 似乎不存在或似乎已被更改(我无法确切找到,因为他们无权查看他们机器上的 cookie),从我们的日志中我知道我们得到以下信息:
Authorization failed for user: null.
Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'.
有谁之前经历过这个吗?就像我说的那样,它适用于大众,但对于这种独特的场景,我们遇到了困难。
登录站点的详细
启动:
// Was previously services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) but the issue still occurred
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options => {
var protectionProvider = DataProtectionProvider.Create(new DirectoryInfo(Config.KeyLocation));
var dataProtector = protectionProvider.CreateProtector("Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware", "Cookie", "v2");
var ticketFormat = new TicketDataFormat(dataProtector);
options.ClaimsIssuer = MyIdentity.AuthType;
options.TicketDataFormat = ticketFormat;
options.Cookie.Name = Config.CookieName;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.Domain = Config.Domain;
options.Cookie.Expiration = TimeSpan.FromMinutes(Config.Expiration);
options.Cookie.SameSite = SameSiteMode.None;
options.ExpireTimeSpan = TimeSpan.FromMinutes(Config.ExpireTimeMins);
options.SlidingExpiration = true;
options.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = ctx =>
{
ctx.Response.Redirect(Config.Login);
return Task.FromResult<object>(null);
}
};
});
我也在service.AddDataProtection
打电话.PersistKeysToFileSystem
让我知道是否应该为产品添加启动代码,不确定它是否有任何区别,因为我假设 cookie 的问题发生在重定向上。
谢谢你的帮助!