0

我正在为如下场景寻找一些架构理念:

环境: 我有一个服务(托管在 Windows 服务中的 wcf),它具有多种功能。我提供客户端库(.NET windows dll),它提供 API 来访问此服务,并且还具有其他客户端功能。

问题: 出于业务原因,我需要为服务寻找一种机制,只允许特定版本的客户端访问某些功能(访问某些 API),而不允许访问其他版本的客户端。基本上,我希望教育服务信任来自 1 个特定客户端版本的所有请求,并仅通过任何其他版本的客户端支持基本操作。

请注意:不能添加任何用户许可或用户安全上下文,因为我只想允许或拒绝特定版本的软件客户端的访问,与用户无关。

例如:从版本 X 客户端,我需要允许所有 READ 和 SAVE 功能。但是从任何其他版本中,我只能允许所有 READ 而不允许任何 SAVE。

可能的解决方案: 到目前为止,我已经考虑向客户端添加一个带有版本号的配置,并将其传递给来自客户端的所有服务请求。该服务可以从数据库或 Web 配置中了解要完全信任的版本。在服务中,我可以拦截通道并查看是否有来自客户端消息的特定字符串,因此支持\拒绝访问特定 API。

对这种情况的任何其他优雅的建议,或者如果有人做过任何相关的事情,那也会有所帮助。

谢谢

4

1 回答 1

0

您可以为客户端提供一个哈希值,当它与对服务的请求一起提供时,将根据客户端提供的哈希值授予客户端访问权限?

就像你提到的那样,有很多方法可以给猫剥皮。

请问您为什么要让您的服务/客户端系统以这种方式运行?

于 2012-07-06T14:19:37.993 回答