HTTP-запрос был запрещен при использовании схемы аутентификации клиента «Аноним». возвращение 403 - PullRequest
0 голосов
/ 18 февраля 2020

Я получаю сообщение об ошибке при вызове службы «HTTP-запрос был запрещен при использовании схемы аутентификации клиента« Аноним ».

фактически я размещаю эту службу в plesk и в plesk. Анонимная проверка подлинности

Конфигурация WCF

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="SampleService.ServiceContracts.SampleService" behaviorConfiguration="mexBehaviour">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpConfig" contract="SampleService.ServiceContracts.ISampleService"></endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpConfig" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" receiveTimeout="00:00:10">
          <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexBehaviour">
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true"></serviceDebug>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpBinding" scheme="https"  />
    </protocolMapping>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

Клиент

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_ISampleService">
          <security mode="Transport" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://samplewcf.packletsgo.com/ServiceContracts/SampleService.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISampleService"
        contract="ServiceReference1.ISampleService" name="BasicHttpBinding_ISampleService" />
    </client>
  </system.serviceModel>

1 Ответ

0 голосов
/ 19 февраля 2020

Эта ошибка обычно возникает, когда сервер аутентифицирует клиента с помощью сертификата, что никак не связано с вашим текущим сценарием. Если доверительные отношения сертификата между клиентом и сервером не установлены, эта ошибка произойдет.
Я сомневаюсь, что конфигурация клиента автоматически генерируется с использованием вышеуказанной конфигурации сервера. В приведенной выше конфигурации мы должны добавить привязку https к веб-сайту на стороне сервера, чтобы Basichttpbinding соответствовал режиму безопасности транспорта. На стороне клиента мы должны доверять сертификату сервера перед вызовом службы, иначе мы получим следующую похожую ошибку:

«Базовое соединение закрыто: доверие не может быть установлено для SSL / TLS security channel ».

Короче говоря, нам нужно проверить, действителен ли удаленный сертификат, прежде чем связываться с сервером.
Наконец, почему служба содержит следующий фрагмент и выполняет вы используете виртуальный путь?

https://localhost/SampleService/AuthService/AuthService.svc

Я хотел бы узнать более подробную информацию о том, как произошла ошибка. Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

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