0

Мы переходим в интегрированный режим IIS7 и сталкиваемся с проблемой. Мы выполняем аутентификацию с использованием WindowsAuthentication, но затем сохраняем ссылку на WindowsPrincipal, чтобы при последующих запросах мы могли разрешать по мере необходимости против AD. В интегрированном режиме IIS 7 токен закрывается (между запросами), так что, когда мы пытаемся запустить IsInRole, он генерирует удаленное исключение. Есть ли способ кэшировать этот токен или изменить наше использование WindowsPrincipal, так что нам не нужно делать последовательные запросы AD, чтобы получить его для каждого запроса авторизации?Маркер ввода интегрального режима IIS7 между запросами

Здесь исключение бросают из WindowsPrincipal.IsInRole ("") - System.ObjectDisposedException: { "Безопасный дескриптор был закрыт"}

Спасибо.

ответ

0

Вы пробовали позволить IIS кэшировать информацию об аутентификации для вас?

Ознакомьтесь с параметрами раздела web.config. В частности, атрибуты authPersistNonNTLM и authPersistSingleRequest. PersistNonNTLM = True может делать то, что вам нужно, без какой-либо пользовательской реализации в вашем коде.

http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication

+0

Это не решило нашу проблему, но хорошо знать, когда мы восстанавливаем уровень безопасности. Оказывается, обычная логика ISAPI/олицетворения в нашем магазине вызывала проблему. Благодарю. – Andy

0

В AcquireRequestState обработчик событий я просто прикоснулся к HttpContext.Current.User.Identity.Name ниже

var t = HttpContext.Current.User.Identity.Name; 
var p = HttpContext.Current.Profile; 

и в моих WCF услуги, которые я мог бы использовать Identity и Profile, без ObjectDisposedException.

Я не знаю почему.

Смежные вопросы