WCF выдает исключение, что сервер отклонил учетные данные клиента, каков режим безопасности по умолчанию для NetTCP в WCF - PullRequest
0 голосов
/ 01 ноября 2018

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

Я получил, как решить эту проблему здесь

Я хочу знать, каков режим безопасности по умолчанию для NetTCP в WCF? У меня ничего не было связано с безопасностью в моем конфигурационном файле, как показано ниже. Так что по умолчанию?

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <behaviors>
        <serviceBehaviors>
            <behavior name="BasicServiceBehavior">
                <serviceMetadata httpGetEnabled="false"/>
                <serviceDebug includeExceptionDetailInFaults="false"/>
                <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
            </behavior>
        </serviceBehaviors>
        <endpointBehaviors>
            <behavior name="HCCNetTcpBinding" >
                <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="BasicServiceBehavior" name="HCC.SMS4.SERVICES.BASIC.MainServices">
            <endpoint address="" binding="netTcpBinding" contract="HCC.SMS4.SERVICES.BASIC.IMainServices" bindingConfiguration="HCCNetTcpBinding" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            <host>
                <baseAddresses>
                    <add baseAddress="http://xxxx:44008/HCsmsBasicServices/"/>
                    <add baseAddress="net.tcp://xxxx:45008/HCsmsBasicServices/"/>
                </baseAddresses>
            </host>
        </service>
    </services>

    <bindings>
        <netTcpBinding>
            <binding name="HCCNetTcpBinding" maxConnections="1000" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"
                      openTimeout="14:00:00" receiveTimeout="14:00:00" sendTimeout="14:00:00">
                <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
            </binding>
        </netTcpBinding>
    </bindings>

</system.serviceModel>

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Режим безопасности транспорта для NetTcpBinding - это Transport, а ClientCredentialType - для Windows. Это эквивалентно следующим настройкам.

<netTcpBinding>
  <binding name="netTcp">
    <security mode="Transport">
      <transport clientCredentialType="Windows" />
    </security>
  </binding>
</netTcpBinding>

Поэтому, когда вы используете прокси-класс клиента для вызова службы, вы можете обратиться к следующему коду.

ServiceReference1.ServiceClient client = new ServiceReference1.ServiceClient();
            client.ClientCredentials.Windows.ClientCredential.UserName = "administrator";
            client.ClientCredentials.Windows.ClientCredential.Password = "abcd1234!";
var result = client.SayHello();

https://docs.microsoft.com/en-us/dotnet/framework/wcf/system-provided-bindings https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/feature-details/bindings-and-security

Не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы.

0 голосов
/ 08 августа 2019

WCF, его аутентификация по умолчанию - Windows, если в ней нет настроек.

0 голосов
/ 01 ноября 2018

Per Документация Microsoft для NetTcp. Привязка по умолчанию - TLS с безопасностью Windows.

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