我正在寻找以下场景的一些架构构思:
环境: 我有一个服务(在Windows服务中托管的wcf),它具有多种功能。我提供客户端库(.NET windows dlls),它提供API来访问此服务,还具有其他客户端功能。
问题: 出于商业原因,我需要寻找一种服务机制,只允许一个 客户端的特定版本,用于访问某些功能(访问某些API),不允许访问其他版本的客户端。基本上,我希望教育服务信任来自1个特定客户端版本的所有请求,并通过任何其他版本的客户端支持基本操作。
请注意:不能添加任何用户权限或用户安全上下文,因为我只想允许或拒绝特定版本的软件客户端访问,而与用户没有任何关系。
例如:从版本X客户端,我需要允许所有READ和SAVE功能。但是从任何其他版本,我只允许所有READ,但不允许任何SAVE。
可能的解决方案: 到目前为止,我已经考虑过向客户端添加一个带有版本号的配置,并将其传递给客户端的所有服务请求。该服务可以从DB或Web配置中了解完全信任的版本。在服务中,我可以拦截通道,看看我是否有来自客户端消息的特定字符串,因此支持\ deny访问特定的API。
对于这种情况的任何其他优雅的灵魂,或者如果任何人做了任何相关的事情,这也会有所帮助。
由于
答案 0 :(得分:0)
您可以为客户端提供散列,当与服务请求一起提供时,会根据客户端提供的散列授予客户端访问权限吗?
就像你提到的那样,有许多方法可以给猫皮肤。
请问为什么要让您的服务/客户端系统以这种方式运行?