Настройте WCF для игнорирования требований проверки подлинности внутри IIS - PullRequest
0 голосов
/ 14 января 2011

Сценарий:

  1. Два веб-сайта (example.com, admin.example.com), которые совместно используют одну и ту же папку wwwroot.
  2. example.com разрешает только анонимный доступ
  3. admin.example.com разрешает только аутентификацию Windows.
  4. / Service / Awesome.svc возвращает объект json

Доступ к сервису Awesome с использованием example.com работает, пока администратор работает.example.com создает исключение NotSupportedException; «Настройки безопасности для этой службы требуют« анонимной »аутентификации, но она не включена для приложения IIS, на котором размещена эта служба.»

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
                             multipleSiteBindingsEnabled="true" />

  <behaviors>
    <serviceBehaviors>
      <behavior name="serviceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="jsonBehavior">
        <enableWebScript />
      </behavior>
    </endpointBehaviors>
  </behaviors>

  <services>
    <service name="WcfServices.AwesomeService"
             behaviorConfiguration="serviceBehavior">
      <endpoint address="" binding="webHttpBinding" 
                contract="WcfServices.IAwesomeService" 
                behaviorConfiguration="jsonBehavior" />
    </service>
  </services>
</system.serviceModel>

Как настроить WCF для игнорирования аутентификациитребование?Мне нужно такое же поведение, как если бы это был веб-сервис или обработчик, просто запустите и верните удивительный объект json.

Ответы [ 2 ]

0 голосов
/ 16 января 2011

Я думаю, тебе здесь не повезло. Предоставьте AWesome.svc анонимный доступ и предоставьте другому пользователю учетную запись, которая не имеет доступа к конфиденциальным ресурсам.

0 голосов
/ 15 января 2011

Похоже, у вас есть две копии сервиса, одна на веб-сайте example.com, а другая на admin.example.com. Если admin.example.com требуется встроенная проверка подлинности IIS (запрос / ответ), то привязка службы WCF должна быть в транспортном режиме, поскольку для IIS требуется, чтобы все ресурсы admin.example.com были проверены как Windows Попробуйте эту конфигурацию:

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

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

Удачи.

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