建立安全性上下文=“假”和协商服务Credential =“假”的安全含义是什么?

时间:2018-10-25 13:12:00

标签: c# wcf ws-trust

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

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

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

这些设置对安全性有何影响?它们会以任何方式降低安全性吗?

2 个答案:

答案 0 :(得分:1)

所描述的方案实际上并没有改变客户端与服务器之间建立的连接的安全性。它仅更改如何指定安全性以及如何指定凭据。

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

negotiateServiceCredential指定相对于显式指定的凭证,是否可以协商要使用的凭证。

用于此目的的总体框架文档为here

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

答案 1 :(得分:0)

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