Защита WCF с помощью пользовательской привязки NTLM и пользовательского участника в asp.net

#asp.net #wcf #security

#asp.net #wcf #Безопасность

Вопрос:

Для защиты службы WCF я хочу использовать моего пользовательского участника active Directory, используемого в asp.net веб-сайт, на котором размещена служба. При навигации по веб-сайту все в порядке, и пользовательский основной элемент настраивается с помощью следующего кода

статический недействительный запрос context_AuthenticateRequest (отправитель объекта, EventArgs e) { идентификатор CustomIdentity; Пользовательский основной участник = GetPrincipalFromCookie();

         if (principal == null)
        {
            ... create principal from active directory
            ... Store Principal in a cookie
        }

        HttpContext.Current.User = principal;
        Thread.CurrentPrincipal = principal;
    }
  

ОДНАКО, когда я выполняю вызов WCF в своей службе, появляется диалоговое окно входа, в котором удаляется строка HttpContext.Current.Пользователь = основной приводит к тому, что диалоговое окно входа не отображается, но для меня это бесполезно, поскольку мне это нужно для заполнения WebUserSecurityContext для моего приложения. Я использую пользовательскую привязку с NTLM

       <httpTransport authenticationScheme="Ntlm" 
        maxBufferSize="2147483647"
        maxReceivedMessageSize="2147483647"
        maxBufferPoolSize="2147483647" proxyAuthenticationScheme="Anonymous"/>
    </binding>
  </customBinding>
  

Мне не хватает параметра в моей конфигурации, чтобы предотвратить это диалоговое окно входа в систему, или есть лучший способ? любая помощь была бы оценена

Ответ №1:

HttpContext.Current не рассматривается, пока не будет включена AspNetCompatibilityMode . Вы включили AspNetCompatibilityMode для службы?

Комментарии:

1. Привет, режим AspNetCompatibilityMode уже включен в службе