WCF 抛出异常,表示服务器拒绝了客户端凭据,WCF 中 NetTCP 的默认安全模式是什么 [英] WCF throws exception that the server has rejected the client credentials, what is the default security mode for NetTCP in WCF

查看:20
本文介绍了WCF 抛出异常,表示服务器拒绝了客户端凭据,WCF 中 NetTCP 的默认安全模式是什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

WCF 作为 Windows 服务部署在服务器中.客户端是一个windows窗体应用程序.当客户端与 WCF 服务器交互时,这里是否进行了某种身份验证?

The WCF is deployed as a windows service in the server. And the client is a windows form applicaiton. When the client is interacting with the WCF server, is there any kind of authentication going on here?

我在此处

我想知道WCF中NetTCP的默认安全模式是什么?我的配置文件中与安全无关,如下所示.那么默认值是多少?

I want to know what is the default security mode for NetTCP in WCF? I had nothing related with security in my config file as below. So what is the default?

<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>

推荐答案

NetTcpBinding 的传输安全模式为 Transport,ClientCredentialType 为 Windows.这相当于下面的设置.

The transport security mode of the NetTcpBinding is Transport and the ClientCredentialType is Windows. This is equivalent to the following settings.

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

所以当你使用客户端代理类调用服务时,可以参考如下代码.

So when you use the client proxy class to call the service, you could refer to the following code.

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-bindingshttps://docs.microsoft.com/zh-cn/dotnet/framework/wcf/feature-details/bindings-and-security

如果您有任何问题,请随时与我联系.

Feel free to contact me if you have any questions.

这篇关于WCF 抛出异常,表示服务器拒绝了客户端凭据,WCF 中 NetTCP 的默认安全模式是什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆