Файлы cookie .NET перестают работать через некоторое время. Аутентификация IIS Entra.C#

Место общения программистов C#
Anonymous
Файлы cookie .NET перестают работать через некоторое время. Аутентификация IIS Entra.

Сообщение Anonymous »

Использование openidconnect для переработки метода входа в веб-приложение .NET Framework 4.7. Я столкнулся с проблемой, когда сеанс не устанавливается через случайное время. Это происходит только после развертывания приложения в IIS. Происходит через 30 минут, но иногда на это уходит пара часов. Всякий раз, когда возникает проблема, ни один пользователь не может войти в веб-приложение.
Реализация Entra:

Код: Выделить всё

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "Entra",
Caption = "Sign-in with Entra",

ClientId = EntraService.ClientId,
RedirectUri = EntraService.RedirectUrl,
Authority = EntraService.Authority,
PostLogoutRedirectUri = EntraService.RedirectUrl,

Scope = OpenIdConnectScope.OpenIdProfile + " " + OpenIdConnectScope.Email,
ResponseType = OpenIdConnectResponseType.CodeIdToken,
ProtocolValidator = new OverrideOpenIdConnectProtocolValidator(false),

Notifications = new OpenIdConnectAuthenticationNotifications()
{
SecurityTokenValidated = (context) =>
{
UserHelper userMigration = new UserHelper();
if (!userMigration.AuthorizeFlow(context))
{
Log.Information("Entra: SecurityTokenValidated AuthorizeFlow fail");
return Task.FromResult(0);
}

Log.Information("Entra: SecurityTokenValidated AuthorizeFlow success");
return Task.FromResult(0);
}
}
});
Пользователь аутентифицируется в функции AuthorizeFlow после установки правильных утверждений:

Код: Выделить всё

context.AuthenticationTicket = new AuthenticationTicket(new ClaimsIdentity(authorizedIdentity.Claims, context.AuthenticationTicket.Identity.AuthenticationType), context.AuthenticationTicket.Properties);
Log.Information("Setting AuthenticationTicket identity");
При возникновении проблемы всякий раз, когда пользователь входит в систему с помощью единого входа, он перенаправляется на домашнюю страницу, поскольку приложение ожидало входа в систему. Используя журналы, я мог следить за кодом в среде принятия, где он выполнял все шаги по настройке сеанса входа в систему. Но на самом деле файлы cookie не устанавливались и не присутствовали в заголовках ответов.
Настройки аутентификации файлов cookie:

Код: Выделить всё

 app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
LoginPath = new PathString("/Login"),
CookieSameSite = SameSiteMode.None,
CookieSecure = CookieSecureOption.Always,
ExpireTimeSpan = TimeSpan.FromMinutes(60)
});
Сервер IIS (принятый) имеет усиление CIS.
Есть идеи, как решить эту проблему?>

Подробнее здесь: https://stackoverflow.com/questions/786 ... entication

Вернуться в «C#»