0

多くの異なるアプリケーションによって消費されるコア 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 アプリケーション内でサービスを公開する必要がありますか?

それとも、同じ認証ストアを使用して誰がサービスの何にアクセスできるかを判断するさまざまなアプリケーションを含むサービスを中央に配置することは不可能なのでしょうか?

4

1 に答える 1

0

探しているのは、すべてのエントリ ポイントで使用される何らかのフェデレーション認証システムです。それが、Windows Identity Foundation が構築に役立つものです。

各アプリケーション内では、認証システムによって発行された各ユーザーのセキュリティ トークンに埋め込まれたクレームに従って、アクセス制御がクレーム ベースになります。

MSDN には、このテーマに関する本が 1 冊あります。

于 2012-07-04T11:50:26.010 に答える