Пользовательская аутентификация в WCF через basicHttpBinding - PullRequest
0 голосов
/ 15 ноября 2011

У меня работает WCF. У меня есть следующая конфигурация для этого:

<bindings>
  <basicHttpBinding>
      <binding name="HttpStreaming" maxReceivedMessageSize="65536000" closeTimeout="00:05:00" bypassProxyOnLocal="true" openTimeout="00:05:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" transferMode="Streamed" messageEncoding="Mtom">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="65536000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        <security mode="None">
          <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
        </security>
      </binding>
  </basicHttpBinding>
</bindings>

<behaviors>
  <serviceBehaviors>
    <behavior name="CifsManager.CifsManagerServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

<services>
  <service behaviorConfiguration="CifsManager.CifsManagerServiceBehavior" name="CifsManager.CifsManagerService">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="HttpStreaming" contract="CifsManager.ICifsManagerService"></endpoint>
  </service>
</services>

Я сгенерировал прокси-класс для вызова службы ServiceClient и вызываю его следующим образом:

var service = new ServiceClient();
service.ClientCredentials.UserName.UserName = "111";
service.ClientCredentials.UserName.Password = "111";
service.bufferSize = int.Parse(ConfigurationManager.AppSettings["BufferSize"]);
var file= service.GetFile();

Здесь Я нашел статьи, в которых описано, как решить мою проблему, через wsHttpBinding , но, используя его, я получаю ошибку сервера. Могу ли я создать аутентификацию, используя basicHttpBinding или мне нужен wsHttpBinding и как мне это сделать?

1 Ответ

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

Я просто соберу все это в ответ, чтобы все было в одном месте, и его легче было найти, а не разложить среди комментариев.Использование BasicHttpBinding означает, что ваши учетные данные будут передаваться в незашифрованном виде по проводам, то есть они могут быть перехвачены по пути без особых проблем.Вы можете избежать этой проблемы, используя WsHttpBinding, что позволяет использовать один из трех различных типов безопасности: Transport, Message или TransportWithMessageCredential.Вы можете прочитать об этих здесь .Имейте в виду, однако, что для любого из них вам понадобится сертификат той или иной формы.

Этот вопрос содержит краткое обсуждение некоторых других вариантов безопасности WCF.Если вы намерены использовать BasicHttpBinding и передавать свои учетные данные по проводам, вы можете, по крайней мере, подумать о том, чтобы маскировать их каким-либо образом, прежде чем делать это, возможно, sha1 с солью или что-то подобное.Если вы не хотите использовать какие-либо встроенные и готовые решения, такие как членство в ASP.NET, вам придется самостоятельно выяснить, какой тип токена аутентификации вы хотите передать взад и вперед.

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