У меня есть два сайта, размещенные на одном сервере IIS. SiteA содержит службы WCF, к которым должен обращаться SiteB, а также все, что аутентифицировано в домене.
Служба настроена с помощью wsHttpBinding, и поэтому я считаю, что по умолчанию используется безопасность Windows. Прямо сейчас я могу вызвать службы из консольного приложения, работающего на моем локальном компьютере, а также из веб-приложения, работающего на веб-сервере Visual Studio по умолчанию, поэтому я предполагаю, что аутентификация работает.
Однако, когда SiteB пытается получить доступ к сервисам, происходит сбой с этой ошибкой:
Вызывающий не был аутентифицирован службой.
SiteB работает на той же машине, что и SiteA, поэтому я не понимаю, почему он не может быть аутентифицирован. SiteB использует проверку подлинности с помощью форм, и я сопоставил анонимный доступ пользователю домена.
Вот биты конфигурации:
Сайт A (услуга):
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service behaviorConfiguration="wcfServiceBehaviour" name="MyService">
<endpoint address="" binding="wsHttpBinding" contract="IServiceContract" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="wcfServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Сайт B (клиент):
<system.serviceModel>
<client>
<endpoint address="http://xxxxx/Services/xxService.svc"
binding="wsHttpBinding"
contract="IServiceContract" />
</client>
</system.serviceModel>