1

我们已经设置establishSecurityContext="False"negotiateServiceCredential="False"一个wsHttpBinding. 在每个 Web 服务调用都涉及连接和断开连接的设置中,这将每个 Web 服务调用的请求数从 5 个减少到 1 个,从而显着提高了性能。

客户端已配置为通过身份节点了解服务器身份:

<endpoint address="..." behaviorConfiguration="..." binding="wsHttpBinding" bindingConfiguration="..." contract="..." name="...">
  <identity>
    <certificate encodedValue="..." />
  </identity>
</endpoint>

这些设置的安全含义是什么?他们会以任何方式降低安全性吗?

4

2 回答 2

1

所描述的场景实际上并没有改变客户端和服务器之间建立的连接的安全性。它只是改变了如何指定安全性以及如何指定凭证。

establishSecurityContext是一种更高级别的机制,它有助于使用令牌指定安全上下文,而不是直接指定较低级别的详细信息。

negotiateServiceCredential指定是否可以协商要使用的凭据,而不是明确指定。

完整的框架文档在这里

在客户端为每个调用建立和处理连接并且已知客户端和服务器可以满足指定要求(即无需协商)的设置中,OP描述的设置是减少的合理方法在不更改实际应用于连接的安全策略的情况下建立连接的开销。

于 2018-11-02T16:28:05.140 回答
0

NegotiateServiceCredential,如果通过协商过程获得服务凭证,则为true;否则为假。默认值为真。
https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.messagesecurityoverhttp.negotiateservicecredential?redirectedfrom=MSDN&view=netframework-4.7.2#System_ServiceModel_MessageSecurityOverHttp_NegotiateServiceCredential
建立安全上下文。True:如果使用 SecurityContextToken 建立安全对话。否则为假,默认为假。
https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-2.0/aa715023(v=msdn.10)

于 2018-11-01T09:32:12.667 回答