Приложения ASP.NET без поддержки утверждений и ADFS v2.0 - PullRequest
4 голосов
/ 16 июня 2011

Эта статья заставила меня задуматься о том, что произойдет с приложениями ASP.NET без поддержки утверждений, когда вы объедините их с ADFS через FedUtil.

В статье предлагается ключ к получениюэта работа включает включение службы заявок на токены Windows (C2WTS).Эта служба эффективно превращает токен ADFS в токен Windows.

Поэтому я создал быстрое приложение ASP.NET с использованием аутентификации Windows, запустил FedUtil и могу проходить аутентификацию с помощью ADFS с использованием аутентификации ADFS Windows или StarterSTS.Проблема в том, что C2WTS не работает, поэтому он работает, хотя я ожидал, что он не будет.

Очевидно, у вас нет доступа к объектам утверждений внутри приложения, но в остальном он работает без проблем.

Это, однако, вызывает проблему.Как выйти из ADFS, поскольку у вас нет доступа к FederatedPassiveSignOut и т. Д.?

Отправляются ли токены в приложение?

Это просто игнорирование их без каких-либо исключений?

Нужно ли C2WTS быть частью картинки?

Я что-то пропустил?

1 Ответ

2 голосов
/ 19 июня 2011

На других форумах Стив Сайфухс ответил:

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, вы должны удалить и перенастроить.
...