Повторная аутентификация с использованием ADFS? - PullRequest
1 голос
/ 09 февраля 2011

Мне поручено написать веб-приложение asp.net, которое будет использовать ADFS для аутентификации. Однако на одном из этапов приложения пользователям придется повторно пройти аутентификацию и снова ввести свое имя пользователя и пароль.

Можно ли это сделать с помощью ADFS?

Ответы [ 5 ]

3 голосов
/ 11 февраля 2011

Приложение ASP.NET может быть как активным клиентом для STS, так и пассивным. Когда вам нужно подойти, предоставьте некоторые поля ввода и попросите пользователя предоставить дополнительные доказательства того, кто они. Используя WSTrustChannelFactory , передайте эту информацию (и, возможно, оригинальный токен) в STS, чтобы получить новый токен, более свежий и содержащий утверждения, достаточные для авторизации транзакции с более высоким значением.

1 голос
/ 21 февраля 2011

В этой статье описана процедура "повышения", которая может помочь вам в этом сценарии.Я не использовал его, поэтому не могу комментировать подробно.Это выглядит очень близко к тому, что вы пытаетесь сделать.

1 голос
/ 09 февраля 2011

Какова цель повторной аутентификации, т. Е. Что должен доказать пользователь?

Я предполагаю, что приложению нужен маркер входа с недавней отметкой времени аутентификации (скажем, в течение последних 10 секунд), так что приложение достаточно уверенно, что клиентская система действительно все еще находится под контролем того же пользователя .

(Кстати, обратите внимание на разницу часов между вашим веб-сервером и сервером AD FS.)

В ближайшие месяцы я буду исследовать похожий сценарий, и моя текущая идея - использовать Событие SessionAuthenticationModule.SessionSecurityTokenReceived , как описано в этом сообщении в блоге Витторио Берточчи . Однако это не может быть полным решением, поскольку это только вынуждает AD FS выдавать токен, но не вынуждает AD FS выдавать токен с недавней отметкой времени аутентификации.

Так что пока нет ответа, но, возможно, эти подсказки помогут.

0 голосов
/ 24 августа 2015

Для ASP.NET, использующего WIF, вы используете WS-Federation в качестве протокола для взаимодействия с ADFS и получения токена. В рамках этого вы можете указать wrefresh = 0 в запросе на вход в ADFS. Когда это отправляется, ADFS игнорирует любое предыдущее состояние файла cookie (веб-SSO) и выполняет новую аутентификацию, поэтому новый токен будет выдан приложению. В случае компьютера, подключенного к домену интрасети, это будет молчать.

Для взаимодействия с пользователем вы можете сделать одну из двух вещей

  • Для 2012R2 я рекомендую вам использовать MFA, и приложение может запросить MFA, запрашивая MFA в этом сценарии «наращивания». Смотри http://blogs.msdn.com/b/ramical/archive/2014/02/18/under-the-hood-tour-on-multi-factor-authentication-in-ad-fs-part-2-mfa-aware-relying-parties.aspx
  • Помимо этого, вы также можете принудительно ввести имя пользователя / пароль и объединить его с wrefresh = 0. Это гарантирует, что предыдущее состояние единого входа игнорируется и выполняется аутентификация U / P.

Спасибо // Сэм (@MrADFS)

0 голосов
/ 03 августа 2015

Уменьшение свойства TokenLifetime заставляет вас повторной аутентификации пользователей.Предположим, что по умолчанию TokenLifetime составляет 60 минут, но показывает всплывающее окно до 20 минут.но может быть потеря данных

...