WCF引发服务器拒绝客户端凭据的异常,这是WCF中NetTCP的默认安全模式



WCF作为一个windows服务部署在服务器中。客户端是一个windows窗体应用程序。当客户端与WCF服务器交互时,这里是否正在进行任何类型的身份验证?

我知道如何在这里解决这个问题

我想知道WCF中NetTCP的默认安全模式是什么?我的配置文件中没有任何与安全相关的内容,如下所示。那么,默认情况是什么呢?

<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。这相当于以下设置。

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

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

WCF,如果没有任何配置,它的默认身份验证是Windows。

根据NetTcpBinding的Microsoft文档,默认安全性为TLS和Windows安全性。

相关内容

  • 没有找到相关文章

最新更新