gpt4 book ai didi

WCF NetTcpBinding 安全性 - 它是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 01:26:39 26 4
gpt4 key购买 nike

我在尝试解决 WCF 中的设置困境时遇到了以下问题...

我使用 NetTcp 绑定(bind)创建了 WCF 客户端-服务器服务。我没有对安全设置进行任何更改,并且在一台计算机上运行时它运行得非常好。但是,当我从另一台计算机运行客户端时,它提示服务器不喜欢发送的安全凭证。

我现在明白 NetTCP 默认情况下是“安全的”,并且我的客户端可能会向其传递错误的安全详细信息 - 即 Windows 用户名和密码(或某种形式的域身份验证)我的服务器,因为它们没有在同一个域上运行,所以它不会喜欢。

但是,我不明白的是:

我没有在绑定(bind)中指定任何安全性 - 标准设置是否需要发送 Windows 用户名或密码?

我的服务器上没有安装任何证书 - 我知道 NetTCP 绑定(bind)需要某种形式的公共(public)私钥来保护凭据 - 但当客户端和服务器位于同一台计算机上时,这似乎可以工作 - 情况如何数据被加密?或者想要它,因为 WCF 知道它在同一台计算机上并且不需要加密?

我现在必须将客户端和服务器上的安全模式设置为“无”,并且它们连接良好。但是有没有一种方法可以在没有证书的情况下加密我的数据?

最后...传输安全和消息安全之间有什么区别?

为了检查我的理解(请原谅这个场景!)消息安全就像我从 A 发给 B 的一封信,然后我对我的手写内容进行编码,以确保如果有人拦截它,他们就无法阅读它?运输安全是指我是否决定通过武装运输工具发送信件,这样沿途就没有人可以拿到它?

是否可以在没有证书的情况下在 WCF 中进行任何形式的加密?我的项目是私有(private)项目,我不想购买证书,而且数据也不是那么敏感,所以这只是为了我自己的知识。

最佳答案

NetTcpBinding 的默认客户端凭据类型是 Windows 身份验证。要使 Windows 身份验证正常工作,客户端和服务器必须位于同一域或相互信任的域中(在您的情况下,您没有)。

如果客户端和服务器位于同一域中,WCF 将在“幕后”处理 Windows 身份验证机制。当客户端和服务器位于同一台计算机上时,它们实际上位于同一域中,因此 Windows 可以使用自己的机制来处理加密和解密。不过,它只会在相互信任的域内执行此操作。

如果您没有相互信任的客户端和服务器域,则客户端和服务器必须有其他方式来确定它们是否信任对方的 key 。这就是证书的用武之地。客户端和服务器都有自己的证书(或者服务器可以向客户端颁发证书)。

传输安全就像加密信封的外部和内部。缺点是,如果您必须将信封传递给您自己组织之外的某人,他们需要解密 key 才能知道信封应该去哪里 - 现在他们也可以读取信封中的消息。另一方面,传输安全性更快 - 它需要更少的安全开销数据与信封一起传递。

消息安全会对您的消息进行加密,但邮政工作人员(互联网及其路由器)可以读取信封。只有源和目标拥有解密消息的 key ,但中介可以正确路由您的消息。

总结:要通过 NetTcpBinding 使用加密,客户端和服务器都必须位于一个域(或相互信任的域)内,或者您必须拥有 key 交换证书。

<小时/>

编辑:有人要求我提供一些示例代码 - 这是 XAML 中的绑定(bind)元素。它通常被放置在 netTcpBinding 元素内。

<binding name="Secure" listenBacklog="4000" receiveTimeout="00:20:00" sendTimeout="00:20:01" 
maxReceivedMessageSize="2147483647" maxConnections="200" portSharingEnabled="true">
<!-- ~2 GB -->
<readerQuotas maxStringContentLength="2147483647"/>
<!-- ~2 GB max string content length -->
<security mode="Message">
<transport clientCredentialType="None" protectionLevel="EncryptAndSign"/>
<message clientCredentialType="None"/>
</security>
</binding>

重要的部分是安全元素。为了传输安全,可以将模式属性更改为“传输”。 clientCredentialType 很可能不是“None”,而是“Certificate”、“Ntlm”或“Windows”,具体取决于上下文。

关于WCF NetTcpBinding 安全性 - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com