Как отключить время ожидания пользователя, который бездействует на веб-странице, используя OAuth 2.0, и требовать повторного ввода учетных данных? - PullRequest
1 голос
/ 05 августа 2020

Добрый день всем,

У меня есть веб-сайт, размещенный в Azure. Он работает на net ядре 3.1 с использованием Blazor в качестве интерфейса. Я использую OAuth 2.0 и OpenID Connect с Microsoft Identity Client 4.14 для аутентификации пользователей на сайте. Я также выполняю вызовы API к Azure, где использую делегированные разрешения, требующие согласия.

Я хочу реализовать безопасность сайта и по-прежнему разрешать пользователю использовать свои учетные данные OAuth.

  1. Я хочу, чтобы пользователю не приходилось создавать учетные данные специально для этого сайта.
  2. Я хочу воспользоваться преимуществами разрешений, согласия и т. Д. Платформы Microsoft Identity Platform c.
  3. Я хотел бы установить тайм-аут простоя.

Вот часть, которую я не могу понять, как этого добиться.

  1. Когда пользователь находится на сайте и простаивает в течение определенного c периода времени (я буду использовать в качестве примера 15 минут), я хочу, чтобы страница была заблокирована, чтобы пользователю пришлось повторно вводить учетные данные.
  2. Если пользователь закрывает браузер и снова пытается получить доступ к сайту, я бы хотел, чтобы ему снова потребовали ввести учетные данные. Я понимаю, что это также означает, что для первоначального доступа к этому сайту также потребуется ввести учетные данные.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2020

Я отправляю этот ответ, чтобы узнать, есть ли лучший ответ. Единственное, что мне не нравится в этом решении, так это то, что пользователь остается в приглашении «Из какой учетной записи вы хотите выйти» после того, как истекло время ожидания.

Итак, вот что я сделал. Я настроил соединение OpenID в классе Startup.cs. Если я добавлю «prompt = login» в класс Startup.cs> ConfigurServices> OpenIDConnecOptions (см. Изображение ниже), это заставит пользователя ввести свои учетные данные после того, как будет выполнена ссылка для выхода. Это вариант отмены «единого входа»

Как это работает. Когда вы программно выполняете URL-адрес выхода (siteUrl + «AzureAD / Account / SignOut»), вы попадете на страницу с запросом: Из какой учетной записи вы хотите выйти ". Даже если пользователь не выйдет из учетной записи, он выйдет из вашего приложения, и ему потребуется повторно ввести учетные данные. Это единственный способ сообщить серверу идентификации, что нам нужно повторно аутентифицировать этого пользователя.

Я думаю, важно отметить, что, как только вы измените этот код в startup.cs, вы необходимо выйти из системы один раз, чтобы увидеть все эффекты изменения в других браузерах и на других вкладках. Я предполагаю, что сервер идентификации хранит эту информацию как параметр (prompt = login). Угадаю!

Я использовал JavaScript, чтобы создать тайм-аут простоя и автоматизировать создание и событие щелчка для ссылки выхода. Я получил JavaScript идею таймаута простоя из этого видео. «https://youtu.be/cOV0uV_E6bU». Работает хорошо.

Startup.cs класс

0 голосов
/ 06 августа 2020

Если вы используете стандартные потоки OID C, то после аутентификации время ожидания входа пользователя происходит между веб-приложением (проверяющей стороной) и браузером и выполняется с использованием стандартных веб-сеансов. Вы можете просто отключить пользователя по истечении 15 минут бездействия или закрытия браузера, и вы сможете добиться желаемого поведения.

...