以下のようなシナリオのアーキテクチャのアイデアを探しています。
環境: いくつかの機能を実行するサービス (Windows サービスでホストされている wcf) があります。このサービスにアクセスするための API を提供し、他のクライアント機能も備えたクライアント ライブラリ (.NET Windows DLL) を提供しています。
問題: ビジネス上の理由から、特定のバージョンのクライアントのみが特定の機能にアクセス (特定の API にアクセス) できるようにし、他のバージョンのクライアントにはアクセスを許可しないサービスのメカニズムを探す必要があります。基本的には、1 つの特定のクライアント バージョンからのすべての要求を信頼し、他のバージョンのクライアントを介した基本的な操作のみをサポートするようにサービスを教育することを検討しています。
注:特定のバージョンのソフトウェア クライアントのアクセスを許可または拒否するだけで、ユーザーとはまったく関係がないため、これにユーザー許可またはユーザー セキュリティ コンテキストを追加することはできません。
例:バージョン X クライアントから、すべての READ および SAVE 機能を許可する必要があります。しかし、他のバージョンからは、すべての読み取りのみを許可でき、保存は許可できません。
考えられる解決策: これまでのところ、バージョン番号を含む構成をクライアントに追加し、それをクライアントからのすべてのサービス要求に渡すことを考えてきました。サービスは、DB または Web 構成から完全に信頼するバージョンを知ることができます。このサービスでは、チャネルをインターセプトして、クライアント メッセージからこの特定の文字列があるかどうかを確認できるため、特定の API へのアクセスをサポートまたは拒否できます。
このシナリオに対するその他の洗練された解決策、または関連することを行った人がいる場合は、それも役立ちます。
ありがとう