Как сказал Кирк Ларкин, файл cookie .AspNetCore.Identity.Application, вероятно, устанавливается приложением Identity Server, которое использует Asp.Net Identity. Поэтому, если вы хотите управлять сеансом пользователя в приложении IS4, вам необходимо настроить его там.
Приложение IS4: файл cookie «.AspNetCore.Identity.Application».
Если вы используете Identity длясконфигурируйте cookie как постоянные, вам нужно установить срок действия при входе в систему.
var props = new AuthenticationProperties {
IsPersistent = true,
ExpiresUtc = DateTimeOffset.UtcNow.Add(AccountOptions.RememberMeLoginDuration)
};
await HttpContext.SignInAsync(userId, userName, props);
Если вы не установите IsPersistent=true
, тогда cookie имеет время жизни сеанса, и вы можете установить входящий билет проверки подлинности. истечение срока действия, подобное этому:
.AddCookie(options => {
options.Cookie.Name = "idsrv_identity";
options.ExpireTimeSpan = TimeSpan.FromHours(8);
options.SlidingExpiration = true;
});
Ваше клиентское приложение: cookie-файл ".AspNetCore.Cookies".
services.ConfigureApplicationCookie
не вызывается, поскольку при использовании .AddCookie(...)
это имеет приоритет,Варианты одинаковы.
При этом для файла cookie приложения устанавливается значение сеанс .
.AddCookie(options => {
options.Cookie.Name = "myappcookie";
options.ExpireTimeSpan = TimeSpan.FromHours(8);
options.SlidingExpiration = true;
});
Чтобы сделать файл cookie приложения постоянным с помощью OIDC, можно задать срок действия. в событии OnSigningIn
в AddCookie .
options.Events.OnSigningIn = (context) =>
{
context.CookieOptions.Expires = DateTimeOffset.UtcNow.AddDays(30);
return Task.CompletedTask;
};
Примечание о сеансе пользователя.
Каждая ситуация отличается, поэтому не существует лучшего решения, но помните, что вам нужно позаботиться о двух сеансах пользователя. Один в приложении IS4 и один в вашем клиентском приложении. Они могут выйти из синхронизации. Вам нужно подумать, имеет ли смысл постоянный пользовательский сеанс в вашем клиентском приложении. Вы не хотите, чтобы ваш пользователь оставался вошедшим в ваше клиентское приложение после окончания сеанса центрального единого входа (единый вход).