Единый вход ADFS 2.0 не выходит

У меня проблема с веб-приложением, которое я пишу, которое реализует ADFS 2.0. Я могу заставить пользователей входить в систему просто отлично, но у меня есть ситуации, когда пользователь должен иметь возможность выйти из приложения, чтобы позволить другим пользователям войти в систему.

Что происходит, когда пользователь нажимает кнопку выхода, он запускает следующий метод:

    public void SignOut()
    {
        WSFederationAuthenticationModule.FederatedSignOut(new Uri(Properties.Settings.Default.ADFSIssuer),
            new Uri(Properties.Settings.Default.ADFSRealm));
    }

Мой эмитент ADFS — это https://adfs.domain.com/adfs/ls/. , а моя область ADFS — это основной URL-адрес моего веб-приложения.

Приложение, похоже, затем вышло из системы. Когда другой пользователь нажимает кнопку «Войти», он автоматически входит в систему как предыдущий пользователь без запроса учетных данных.

Я просмотрел следующие ресурсы для помощи, и ничего не сработало:

https://github.com/thinktecture/Thinktecture.IdentityServer.v2/issues/195 http://social.technet.microsoft.com/wiki/contents/articles/1439.ad-fs-how-to-invoke-a-ws-federation-sign-out.aspx

Разве я не должен иметь возможность выйти из приложения ADFS, не закрывая браузер?


person Ryan Duffing    schedule 06.09.2013    source источник
comment
Можете ли вы проверить, какие файлы cookie существуют, когда вы еще не вошли в систему, когда вы вошли в систему и после выхода из нее. Обратите внимание на домены файлов cookie.   -  person rene    schedule 06.09.2013
comment
Я очистил свой кеш перед входом в систему. У меня нет файлов cookie перед входом в систему, после входа в систему у меня есть несколько файлов cookie, назначенных мне ADFS, а затем два файла cookie моим реальным веб-приложением. После выхода из системы ADFS по-прежнему назначает мне два файла cookie: MSISIPSelectionPersistent и MSISLoopDetectionCookie.   -  person Ryan Duffing    schedule 06.09.2013
comment
На какой режим аутентификации (формы или окна) настроена ваша реклама?   -  person Wiktor Zychla    schedule 06.09.2013
comment
Это, вероятно, причина, по которой новый пользователь получает предыдущие учетные данные. RP или STS предполагают, что они уже аутентифицированы, поскольку они все еще видят эти файлы cookie.   -  person rene    schedule 06.09.2013
comment
@Wiktor: ADFS настроена для режима аутентификации Windows.   -  person Ryan Duffing    schedule 06.09.2013
comment
Присоединен ли клиентский домен к домену?   -  person rene    schedule 06.09.2013
comment
@Rene: Могу ли я просто добавить два новых HTTP-файла cookie с теми же именами, что и те два, срок действия которых истекает за день до этого, чтобы удалить их?   -  person Ryan Duffing    schedule 06.09.2013
comment
Бинго, посмотри мой ответ.   -  person Wiktor Zychla    schedule 06.09.2013
comment
Разве ADFSRealm не должен указывать на метод выхода из системы на вашем веб-сайте? Вы можете установить эти файлы cookie только в том случае, если они принадлежат вашему веб-сайту. Вы можете проверить, совпадают ли домены   -  person rene    schedule 06.09.2013
comment
@rene: это не имеет значения, параметр wreply указывает только на сайт, на который перенаправляется adfs. Это не имеет никакого отношения к файлам cookie.   -  person Wiktor Zychla    schedule 06.09.2013
comment
@WiktorZychla Я не был уверен в этой части, спасибо за разъяснения.   -  person rene    schedule 06.09.2013


Ответы (1)


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

Если это так, то вы действительно не можете выйти из уже аутентифицированных adfs, и он с радостью повторно выдает токен при следующем запросе от приложения. Вы ничего не можете с этим поделать, поскольку аутентификация выполняется с помощью ntlm/kerberos, и это браузер, который сохраняет ваши учетные данные, пока вы его не закроете.

Решение состоит в том, чтобы изменить adfs на режим Forms (переключить порядок поставщиков в adfs web.config), чтобы не только у adfs были свои собственные файлы cookie, но и эти файлы cookie действительно удалялись, когда вы выдаете сообщение о выходе.

person Wiktor Zychla    schedule 06.09.2013
comment
Будет ли переход ADFS в режим форм препятствовать автоматическому входу текущего пользователя Windows? - person Ryan Duffing; 06.09.2013
comment
Да, это было бы. Вы не можете иметь оба. - person Wiktor Zychla; 06.09.2013
comment
то есть у вас может быть либо автоматический вход, либо возможность выхода, но не то и другое одновременно? - person bkr; 11.10.2017