На других форумах Стив Сайфухс ответил:
FedUtil изменяет web.config таким образом, чтобы метод аутентификации был «Нет», и вставлял некоторые обработчики очень рано в веб-запрос, чтобы увидеть, существует ли сеанс,и если сеанс не создается путем перенаправления на указанную STS, STS делает свое дело и передает токен обратно на сайт.Другой обработчик получает токен и создает объект IClaimsPrincipal на основе токена.Для объекта Thread.CurrentPrincipal установлено значение IClaimsPrincipal.Таким образом, проверка подлинности Windows НЕ происходит в веб-приложении (но это происходит в ADFS).
OWA (как и все хорошо созданные веб-приложения) ищет в Thread.CurrentPrincipal личность пользователя.Пока значения, предоставленные STS, соответствуют ожиданиям OWA, OWA будет счастлив.Некоторые утверждения доступны через Thread.CurrentPrincipal, например утверждение Name, которое OWA использует для получения имени пользователя.C2WTS был создан для того, чтобы действовать как прокладка между приложением, которое понимает утверждения, и приложением, которое этого не делает, путем создания токена Windows и присоединения его к сеансу пользователя.OWA необходимо вызвать Active Directory, чтобы получить определенные фрагменты информации, и он делает это с помощью аутентификации Windows, и, следовательно, нуждается в маркере Windows.
В этом случае нет способа выйти из ADFS, но вывсе еще можете убить сеанс в OWA или в вашем пользовательском приложении, удалив куки.В пользовательском веб-приложении вы можете создать ссылку на страницу выхода из ADFS, которая является https://adfsserver/adfs/ls/?wa=wsignout1.0 и которая выйдет из ADFS.
Обновление:
Просто для документирования для других:
Этот подход работает с точки зрения аутсорсинга аутентификации, но есть три проблемы:
- Нет доступа к объектам утверждений.
- Вы должны свернуть свойсобственный выход.
- В метаданных федерации есть что-то «другое».Вы не можете добавить приложение как RP в ADFS через URL.Вы должны использовать механизм импорта файлов.Это означает, что нет способа обновить метаданные, поэтому, если есть какие-либо изменения в RP, вы должны удалить и перенастроить.