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

У меня есть приложение 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.0&wreply=http%3a%2f%2flocalhost%3a44301%2f

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


person Neil    schedule 20.06.2014    source источник


Ответы (1)


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

person Willy Van den Driessche    schedule 20.06.2014
comment
подождите, с каких это пор компьютер передает учетные данные для входа в браузер? Возможно, IE делает это, но я надеюсь, что Firefox и Chrome этого не сделают. - person mxmissile; 21.06.2014
comment
Это больше похоже на использование аутентификации Windows на вашем веб-сервере. Это тоже происходит автоматически. Я не знаю точной последовательности того, что происходит в каждом случае. Я уверен только (потому что мы его используем), что он работает таким образом, независимо от браузера. Я предполагаю, что между сервером и клиентом происходит какое-то согласование аутентификации. Внутри домена это делается в одну сторону, а вне домена сервер adfs переключается на базовую аутентификацию http(s)... - person Willy Van den Driessche; 21.06.2014
comment
Я думаю, вы имеете в виду, когда Azure ADFS интегрирован с локальным активным каталогом. В нашей системе такого нет. Пользователи должны войти в систему, используя ACS с именем пользователя, которое не имеет отношения к их входу в Windows. - person Neil; 23.06.2014
comment
Здравствуйте, извините, я думаю, что я был на неправильном пути. Несколько вещей могут быть неправильными. Хорошо бы установить такой инструмент, как скрипач, чтобы посмотреть, что произойдет. В ответ на ваш запрос на выход служба STS (ACS) должна отправить сообщение wsignoutcleanup1.0 в ADFS и ваше приложение. Вам также следует просмотреть файлы cookie в своем браузере, чтобы убедиться, что все файлы cookie (в вашем домене, в домене acs и в домене adfs) правильно удалены после этого вызова. Эта информация должна привести вас к решению. - person Willy Van den Driessche; 25.06.2014