【问题标题】:WCF Routing based on content基于内容的 WCF 路由
【发布时间】:2014-02-21 09:35:52
【问题描述】:

假设我有 4 台服务器,一台公开可见 (A),其他 (B、C 和 D) 仅对一台 (A) 可见。 其中 B、C 和 D 是相同的服务,各自在自己的公司中。

我能否根据呼叫中使用的客户端证书将呼叫从客户端路由到服务器 A,再路由到服务器 B、C 或 D?

此外,是否可以在发往服务器 A 的消息中指定目的地是什么? (需要部分加密消息)(例如:我需要向 C 公司提供员工记录,但 A 应该无法读取该记录。)

我的意思是,如果我在 A 上重新实现 B、C 和 D 的服务,并让 A 成为 B、C 和 D 的新客户端,这当然是可能的。 但我想保证消息从客户端到 B、C 或 D 的安全,让 A 只知道它需要知道什么才能将其传递给他们。 因此,如果我重新实现该服务,我将无法使用 WCF 可以提供的透明消息加密,因为它只会将其全部解密。

编辑:

目标是从客户端获取数据到 B、C 或 D,而 B、C 或 D 只接受来自 A 的 TCP 数据包。并且,不允许 A 读取用于 B、C 或 D 的数据.

【问题讨论】:

    标签: c# wcf encryption wcf-security


    【解决方案1】:

    简短的回答是肯定的,WCF 技术可以做这些事情。

    更长的答案:是的,例如,您可以将“A”设置为 SSL WCF 端点。例如,入站请求可能有一个客户端证书或内部值,指向它在“B”、“C”或“D”上的最终目的地。

    所以工作流程是这样的:

    • 客户端应用初始化 WCF 客户端并联系服务器“A”

    • “A”与客户端应用协商 SSL

    • “A”WCF Web 服务主机接收入站 SSL 请求。

    • “A”解密消息

    • “A”检查目的地的内容 - 结果最终目的地是“D”

    • “A”初始化 WCF 客户端连接

    • “A”将 WCF 客户端 URL 设置为“D”WCF 主机端点 URL

    • “D”接收来自“A”的初始请求,初始化 SSL 通信

    • 服务器“A”WCF 客户端将新加密的请求转发给“D”,后者解密、处理然后将“A”中继回原始客户端的确认发送回。

    当然有很多选择,但除了加密细节之外,工作流程大致相同。

    如果服务器“A”在传递消息之前不应该读取消息的内容,我不确定你要去哪里。基本上,SSL 要么全有,要么全无。

    除了 SSL,另一种常用的加密方法是消息级 (SOAP) 加密,但仅当发送原始消息的客户端在设备上驻留用于消息加密的证书的公钥和私钥时才有效。因此,可以想象,您可以让客户端向服务器“A”发送一个 SSL 包装的请求,该请求具有使用“A”无法读取的消息加密加密的内部内容。请求标头中可能有足够的未加密信息,“A”会知道将消息路由到服务器“D”。

    但是,如果我们谈论的是服务器到服务器的流量,我只会这样做。如果您说的是使用 iPhone 执行此操作的客户,那么我的建议将行不通。

    【讨论】:

    • 嗯,我正在寻找的设置是连接到边缘服务器 (A) 的电话,然后这个将其转发到内部最终目的地 (B、C、..)。因此,将客户端上的 URL 重定向到 B 等是不可能的,因为它们不接受来自 A 之后的任何其他人的流量。但是不允许 A 查看数据包的内容,只能查看标头。但是对于 WCF 只是调用服务方法的方式,我看不到添加额外标头的方法,除非我手动加密数据并将其作为调用中的 blob 提供。 void sendData(EndpointType destination, DataBlob encryptedData);
    • 好的,如果原始请求来自电话,我看不到服务器“A”可以在不读取内部内容的情况下检测目的地“B”或“C”的解决方案。使用 SSL,整个消息被加密或解密。只有使用基于消息的加密,您才能对消息的正文进行加密,而只保留标头。但是消息(soap)加密需要为每个客户端一个非常具体的证书安装过程;对于普通用户来说肯定太复杂了。抱歉...祝您搜索顺利。
    • 此外,即使您可以在请求 URL(查询字符串)中隐藏一些信息,也无法建立从(例如)“B”到“A”到您的苹果手机。 SSL 协商必须直接在客户端和主机之间进行......所以没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2017-05-05
    • 2021-12-06
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多