Я пытаюсь заставить браузер запрашивать у пользователя учетные данные для входа в 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#
Место общения программистов C#
1735090538
Anonymous
Я пытаюсь заставить браузер запрашивать у пользователя учетные данные для входа в 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 и т. д. из браузера поэтому приглашение отображается каждый раз, когда пользователь посещает страницу входа в систему?
Или есть лучший способ, чтобы это приглашение отображалось каждый раз при загрузке страницы?
Заранее спасибо!
[b]Что я пробовал:[/b]
Я пытался отправить ответ Unauthorized() из метода OnGet страницы, который работает при первом посещении, но при каждом последующем посещении страницы приглашение пропускается.
[b]Обновление:[/b]
Рабочий процесс выхода из системы привязан к нашему поставщику удостоверений (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();
Подробнее здесь: [url]https://stackoverflow.com/questions/79305978/how-do-i-show-a-windows-login-prompt-on-every-visit-to-a-razor-page-in-an-asp-ne[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия