Вам необходимо включить аутентификацию в сервисе - при условии, что .NET 4 добавит следующее в вашу конфигурацию
<bindings>
<webHttpBinding>
<binding>
<security mode="Transport">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</webHttpBinding>
</bindings>
для .NET 3.5 или 3.0, вам нужно
<bindings>
<webHttpBinding>
<binding name="webBindingConfig">
<security mode="Transport">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service ...>
<endpoint bindingConfiguration = "webBindingConfig" binding="webHttpBinding" .../>
</service>
</services>
Изменить для дополнительных вопросов:
WCF, как правило, не передает учетные данные по незащищенным транспортам - вот почему режим = "Транспорт" важен.Если вы избавились от него, то же самое, что Mode = "None" для WebHttpBinding
Если сайт считается находящимся в зоне интрасети, то IE автоматически передаст учетные данные пользователя.Тем не менее, браузеры не-IE не будут и поэтому будут посещать сайт анонимно, прежде чем получить 401 и затем отправить учетные данные.Первоначальный запрос требует поддержки анонимного доступа в IIS, так как WCF обрабатывает механизм аутентификации
Если вам нужно завладеть HttpContext, вы можете использовать Совместимость Asp.NET .Однако в WCF вы можете использовать ServiceSecurityContext.Current.PrimaryIdentity.Name, чтобы получить аутентифицированного пользователя