IIS7 встроенный режим закрытия токена между запросами - PullRequest
0 голосов
/ 08 февраля 2011

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

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2012

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

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

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

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

0 голосов
/ 08 февраля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...