WCF, размещенный на IIS6 - PullRequest
       1

WCF, размещенный на IIS6

2 голосов
/ 25 марта 2011

Я пытаюсь запретить анонимный доступ к моей службе WCF, однако я получаю сообщение об ошибке «Настройки безопасности для этой службы требуют« анонимной »аутентификации, но она не включена для приложения IIS, на котором размещена эта служба».

Я пробовал разные идеи, такие как удаление конечной точки mex и установка режима безопасности только для учетных данных транспорта, но это не работает.

Config:

Идентификатор пула моего приложения настроен для сетевой учетной записи, которая находится в моем домене, Мой веб-сайт имеет анонимный доступ без галочки и встроенной аутентификации Windows. Конфигурация моей службы:

<services>      
  <service behaviorConfiguration="CRMDataDashboard_Service.CoreServiceBehavior"
    name="CRMDataDashboard_Service.CoreService">
    <endpoint address="http://crmb1:8900/CoreService.svc" binding="basicHttpBinding" contract="CRMDataDashboard_Service.ICoreService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
   </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="CRMDataDashboard_Service.Service1Behavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    <behavior name="CRMDataDashboard_Service.ChartDataBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    <behavior name="CRMDataDashboard_Service.DataDashboardServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    <behavior name="CRMDataDashboard_Service.CoreServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Любая помощь с этим будет оценена

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Вам необходимо создать привязку в конфигурации, которая определяет аутентификацию Windows как безопасность транспорта:

<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpEndpointBinding">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

Посмотрите здесь .


UPDATE

Вы должны поместить вышеуказанный код чуть ниже <system.serviceModel>. Вам также нужно указать на привязку в вашей конфигурации (в bindingConfiguration используйте BasicHttpEndpointBinding, так как это то, что мы определили как привязку):

<endpoint address="http://crmb1:8900/CoreService.svc" binding="basicHttpBinding" contract="CRMDataDashboard_Service.ICoreService" bindingConfiguration="BasicHttpEndpointBinding">
  <identity>
0 голосов
/ 25 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...