多くの異なるアプリケーションによって消費されるコア WCF サービスを保護するために、いくつかのアーキテクチャ要素に頭を悩ませています。
社内には、人事担当者が従業員の詳細を更新できるアプリケーションがあります。これは WPF アプリに含まれています。外部的には、個人が (AD メンバーシップ プロバイダーを介して) 認証し、詳細を更新できるようにする Web サイトがあります。
ユーザーが他のユーザーの情報を閲覧できるようにしたくありません (明らかな理由により)。しかし、ユーザーがログインするのと同じ Web アプリケーション内でこのサービスをホストしたくありません。ビジュアル スタジオの観点からアーキテクチャがどのように見えるかを次に示します。
ServiceApplication
Wpfアプリケーション
MVCWebアプリケーション
これらは同じドメイン内には存在しません。たとえば、サービス アプリケーションは http://www.service1.com/Service.svc でホストされ、 mvc アプリケーションはhttp://www.updateyourprofile.comでホストされます。 . ユーザーがhttp://www.updateyourprofile.comにログインし、JSON を介して Wcf サービスにアクセスしたいとします。サービス アプリケーション、wpf アプリケーション、および mvc Web アプリケーションの両方が AD 資格情報を使用して認証します。しかし、mvc Web アプリケーションにログインするユーザーが自分の情報のみを表示できるように、サービスを保護するにはどうすればよいでしょうか?
私が目にするほとんどの例では、サービス内で HttpContext.Current.User チェックを使用するように言われています。しかし、ユーザーは別のサイトで認証されたので、Cookie はどのように転送されるのでしょうか? Cookie が透過的に移動するように、消費したいのと同じ Web アプリケーション内でサービスを公開する必要がありますか?
それとも、同じ認証ストアを使用して誰がサービスの何にアクセスできるかを判断するさまざまなアプリケーションを含むサービスを中央に配置することは不可能なのでしょうか?