В настоящее время у нас есть проблемы с единым входом с ADFS 2.0 и внешним IP-STS. Наша настройка такова: RP1 ‹-- trust --> ADFS 2.0 ‹-- trust --> Custom IP-STS RP2 ‹-- trust --> ADFS 2.0 ‹-- trust --> Custom IP-STS
Часть единого входа работает очень хорошо: если пользователи уже вошли в систему с использованием пользовательского IP-STS для доступа к RP1, после этого они могут получить доступ к RP2 в том же сеансе браузера без необходимости повторного входа в систему.
Однако проблема возникает в процессе выхода. Когда пользователи выходят из RP1, с помощью Fiddler мы видим, что:
- Запрос на выход (wsignout1.0) отправляется в ADFS.
- ADFS передает запрос на выход пользовательскому IP-STS
- Настраиваемая IP-STS правильно обрабатывает действие выхода, а затем возвращает обратно в ADFS.
- ADFS возвращается обратно (вышел из системы) RP1
- RP1 больше не аутентифицируется, поэтому, конечно, предлагается снова войти в систему (ПРАВИЛЬНО)
- ВОТ ПРОБЛЕМА: RP2 все еще может работать без каких-либо проблем (с предыдущим набором требований). И ADFS не отправляет никакого действия wsignoutcleanup1.0 на RP2.
Я предполагаю, что ADFS должен выполнять выход для всех RP, имеющих один и тот же сеанс, но это не так. Я ошибся? Или я упустил какую-то конфигурацию?
Конечно, у нас есть возможность явно отправить действие wsignoutcleanup1.0 на RP из пользовательского IP-STS, но нам нужно проанализировать «wctx», чтобы получить исходный URL-адрес RP, чего я не хочу. Я также попытался отправить действие wsignoutcleanup1.0 обратно в ADFS из пользовательского IP-STS (шаг 3), но это также не помогло.