我正在为如下场景寻找一些架构理念:
环境: 我有一个服务(托管在 Windows 服务中的 wcf),它具有多种功能。我提供客户端库(.NET windows dll),它提供 API 来访问此服务,并且还具有其他客户端功能。
问题: 出于业务原因,我需要为服务寻找一种机制,只允许特定版本的客户端访问某些功能(访问某些 API),而不允许访问其他版本的客户端。基本上,我希望教育服务信任来自 1 个特定客户端版本的所有请求,并仅通过任何其他版本的客户端支持基本操作。
请注意:不能添加任何用户许可或用户安全上下文,因为我只想允许或拒绝特定版本的软件客户端的访问,与用户无关。
例如:从版本 X 客户端,我需要允许所有 READ 和 SAVE 功能。但是从任何其他版本中,我只能允许所有 READ 而不允许任何 SAVE。
可能的解决方案: 到目前为止,我已经考虑向客户端添加一个带有版本号的配置,并将其传递给来自客户端的所有服务请求。该服务可以从数据库或 Web 配置中了解要完全信任的版本。在服务中,我可以拦截通道并查看是否有来自客户端消息的特定字符串,因此支持\拒绝访问特定 API。
对这种情况的任何其他优雅的建议,或者如果有人做过任何相关的事情,那也会有所帮助。
谢谢