Я пытаюсь заставить браузер запрашивать у пользователя учетные данные для входа в Windows при каждом посещении настроенной мной страницы. Причина этого в том, что наш клиент хочет, чтобы пользователю приходилось вводить свои учетные данные после каждого успешного выхода из системы.
Пользователи будут получать доступ к сайту через свою внутреннюю сеть, а приложение будет использовать проверку подлинности Windows.
У меня приложение настроено для обслуживания IIS при запуске:
if (useWindowsAuth)
{
services.Configure(iis =>
{
iis.AuthenticationDisplayName = "Windows";
iis.AutomaticAuthentication = false;
});
}
Модель страницы входа украшена атрибутом Authorize:
[Authorize(AuthenticationSchemes = IISDefaults.AuthenticationScheme)]
public class WindowsModel : PageModel
В IIS включены как анонимная проверка подлинности, так и проверка подлинности Windows.
Когда страница загружается, я правильно получаю запрос на ввод учетных данных пользователя.
Когда пользователь нажимает кнопку выхода из системы, я предоставляю ему кнопку, позволяющую вернуться к входу в систему. На этом этапе учетные данные должны появиться снова.
Однако после входа в систему и повторного посещения страницы входа запрос пропускается.
Если Я удаляю кеш браузера, файлы cookie и историю, а затем перезагружаю страницу и снова получаю сообщение. Похоже, что браузер сохраняет аутентификацию.
Как мне программно отменить аутентификацию пользователя ИЛИ как программно очистить кеш, файлы cookie и т. д. из браузера поэтому приглашение отображается каждый раз, когда пользователь посещает страницу входа в систему?
Или есть лучший способ, чтобы это приглашение отображалось каждый раз при загрузке страницы?
Заранее спасибо!
Что я пробовал:
Я пытался отправить ответ Unauthorized() из метода OnGet страницы, который работает при первом посещении, но при каждом последующем посещении страницы приглашение пропускается.
Обновление:
Рабочий процесс выхода из системы привязан к нашему поставщику удостоверений (Identity Server), который выполняет следующий код для очистки любых локальные файлы cookie, а затем перенаправляет пользователя обратно на клиент:
var context = await _interaction.GetLogoutContextAsync(logoutId);
if (User?.Identity.IsAuthenticated == true)
{
// delete local authentication cookie
await _signInManager.SignOutAsync();
}
if (context != null && !string.IsNullOrEmpty(context.PostLogoutRedirectUri))
{
return Redirect(context.PostLogoutRedirectUri);
}
return Page();
Подробнее здесь: https://stackoverflow.com/questions/793 ... -an-asp-ne
Как отображать приглашение на вход в Windows при каждом посещении страницы Razor в приложении ASP.NET Core? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение