2

这里在 MSDN 上以及处理时说明wsHttpBinding,传输安全性是通过 SSL 处理的。

有关 SSL 和 WCF 的 MSDN 页面上,它指出当 ServiceHost 托管在 IIS 中时,ServiceHost 将 SSL 留给 IIS 处理。

这是否意味着如果binding/securityMode="Transport", 任何wsHttpBinding/binding/security/transport/clientCredentialType值都将被忽略,因为它们的任何选项都不需要设置 SSL 传输?

当它声明时,它甚至似乎在这里说了些什么

“将安全模式设置为 TransportWithMessageCredential 时,传输确定提供传输级安全性的实际机制。例如,HTTP 协议在 HTTP (HTTPS) 上使用安全套接字层 (SSL)。因此,设置任何的 ClientCredentialType 属性传输安全对象(如 HttpTransportSecurity)被忽略。换句话说,您只能设置消息安全对象的 ClientCredentialType(对于 WSHttpBinding 绑定,NonDualMessageSecurityOverHttp 对象)。

然而在这里forbasicHttpBinding和 for wsHttpBinding,他们都明确强调如果安全模式设置为 Transport ,请将 binding/transport/clientCredentialType 设置为某些东西(例如:Windows)。

Transport和之间的确切区别是TransportWithMessageCredential什么?

而且我的棒子有错误吗,SecurityType枚举(None|Message|Transport|Mixed)不仅是为了隐私,而且是为了对服务器进行身份验证?

如果传输安全是由 SSL 加密提供的,那么身份验证/授权是如何陷入这个阶段的呢?

非常感谢您帮助我更好地了解这一切是如何结合在一起的。

4

1 回答 1

0

据我所知,TransportWithMessageCredential 是一种“两全其美”。通道在传输层上是安全的,因此客户端和服务之间存在安全连接(这可以非常快,在硬件中实现),而且消息使用消息凭据进行签名,因此它可以在到达服务之前经历多个跃点(在 WCF 中验证)。

当然,您可以使用传输层不支持的消息凭据,例如用户名/密码。

于 2013-08-19T13:01:01.943 回答