Azure ACS не требует повторной аутентификации после выхода из системы

#wif #acs #azure-active-directory

#wif #acs #azure-active-directory

Вопрос:

У меня есть приложение MVC, которое использует Azure ADFS и Azure ACS для аутентификации. Когда пользователь впервые входит в систему, он перенаправляется в Azure ASC для аутентификации. Когда это сделано успешно, пользователь перенаправляется обратно на сайт с помощью токена и может использовать систему в обычном режиме.

Когда пользователь выходит из системы, он перенаправляется на страницу входа, а затем возвращается к исходному экрану входа. Проблема в том, что при повторном нажатии на ссылку входа в систему пользователь автоматически регистрируется снова, не требуя повторной аутентификации. Это означает, что невозможно сменить пользователя, не закрыв браузер, и если пользователь оставляет окна браузера открытыми, любой может щелкнуть ссылку для входа и войти в систему как этот пользователь

Мой код выхода из системы выглядит следующим образом:

     public void Logout()
    {
        var fc = FederatedAuthentication.FederationConfiguration.WsFederationConfiguration;
        var signOutMessage = new SignOutRequestMessage(new Uri(fc.Issuer), fc.Realm);
        FederatedAuthentication.WSFederationAuthenticationModule.SignOut(signOutMessage.WriteQueryString());
    }
  

и signOutMessage.WriteQueryString() генерирует следующее:

 https://myacsnamespace.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0amp;wreply=http://localhost:44301/
  

Я что-то неправильно настроил в ACS или в моем коде чего-то не хватает. Я не могу понять, как остановить автоматическую повторную аутентификацию старого пользователя

Ответ №1:

Как правило, для входа в adfs требуется повторная аутентификация пользователя.
Однако, если пользователь вошел в систему на компьютере внутри домена, он автоматически входит в систему (поскольку он вошел в Active Directory). На компьютере за пределами домена пользователю необходимо будет ввести пароль, запрос браузера Как бы вы хотели изменить это поведение? пример запроса браузером учетных данных (на голландском языке)

Комментарии:

1. подождите, с каких пор «компьютер» передает учетные данные для входа в браузер? IE, возможно, делает это, но я надеюсь, что Firefox и Chrome этого не сделают.

2. Это больше похоже на использование проверки подлинности Windows на вашем веб-сервере. Это также происходит автоматически. Я не знаю точного потока того, что происходит в каждом случае. Я только уверен (потому что мы его используем), что это работает таким образом, независимо от браузера. Я предполагаю , что между сервером и клиентом происходит какое-то согласование аутентификации. Внутри домена это делается одним способом, а за пределами домена сервер adfs переключается на базовую аутентификацию по протоколу http (s)…

3. Я думаю, вы имеете в виду, когда Azure ADFS интегрирована с локальным active Directory. Это не относится к нашей системе. Пользователи должны входить в систему с помощью ACS с именем пользователя, которое не имеет отношения к их входу в систему Windows.

4. Здравствуйте, извините, я думаю, что я ошибся. Несколько вещей могут быть неправильными. Хорошая вещь, которую нужно сделать, это установить такой инструмент, как fiddler, чтобы посмотреть, что произойдет. В ответ на ваш запрос на выход из системы служба STS (ACS) должна отправить сообщение wsignoutcleanup1.0 в ADFS и в ваше приложение. Вы также должны просмотреть файлы cookie в своем браузере, чтобы убедиться, что все файлы cookie (в вашем домене, в домене acs и в домене adfs) правильно удалены после этого вызова. Затем эта информация должна помочь вам найти решение.