2012-03-01 9 views
3

ASP.NETメンバシッププロバイダを使用したフォーム認証で構築されたMVCアプリケーションを開発しました。MVCアプリケーションからWCFアプリケーションへのASP.NETメンバ資格情報の受け渡し

同じサーバーには、MVCアプリケーションと同じデータベース(すべてのaspnetテーブルを含む)を指すWCFアプリケーションも含まれています。

サービスでユーザーが所属するグループを確認したいと思います。

MVCアプリケーションからWCFアプリケーションに資格情報を渡すにはどうすればよいですか?

答えて

1

さて、あなたはどちらか

  • はと対話するWCFアプリケーションのMVCアプリケーションのAPIのいずれかの種類を開発することができます(そしてそれはだあなたは2つのTHIを展開することができます

  • WCFサービスがメンバーシッププロバイダーを認証に使用させて、同じデータベースのwcf側のメンバーシッププロバイダーを指すようにしてください。

チェックこのアウト

[メンバシッププロバイダといえば] Windows通信基盤は(WCF)開発者は、セキュリティ目的のためにこれらの機能を利用することができます。 WCFアプリケーションに統合する場合、ユーザーはWCFクライアントアプリケーションにユーザー名とパスワードの組み合わせを指定する必要があります。データをWCFサービスに転送するには、WSHttpBinding(構成、wsHttpBinding要素)などのユーザー名/パスワードの資格情報をサポートするバインディングを使用し、クライアント資格情報の種類をUserNameに設定します。このサービスでは、WCFセキュリティはユーザー名とパスワード()に基づいてユーザーを認証し、ASP.NETロールで指定されたロールも割り当てます。

That's the article containing configuration samples

私はあなたのニーズを理解願っています。

0

Membership Providerを使用しているので、System.Threading.Thread.CurrentPrincipal.Identityを介してWCFアプリケーションでリソースにアクセスしているスレッドを実行しているIdentity(認証されたユーザー)を確認できます。

例:

static List<UserGroup> GetUserGroups() 
{ 

// Get the authenticated username 
string username = System.Threading.Thread.CurrentPrincipal.Identity.Name; 

// Get the user's groups from your data store and pack them up in a list 
... 
etc 

} 
:あなたのWCFアプリケーションで

、ユーザーが所属するグループを取得するには、あなたのDBを照会し、そこから、その後、認証されたユーザーを発見する方法を持つことができます

+0

私は 'System.Threading.Thread.CurrentPrincipal.Identity'を介してユーザへの参照を取得しません。 'Name'は空白で、' IsAuthenticated'はfalseです。 MVCアプリケーションとWCFアプリケーションは、IISの2つの別々の.NETアプリケーションです(しかし、それらは同じAppPoolを共有します)。 – NetWave

+1

申し訳ありません - あなたのOPが間違っていると解釈しました。私はあなたのMVCアプリがWCF側に住んでいるメンバーシッププロバイダを介してWCFアプリにログインしていると思っていました。つまり、MVC資格情報をWCFに渡す方法はわかりません。方法がある場合、私の考えは、あなたが(他のシステムに暗黙的にログインしても私にとって安全ではないように)信用証明書をしてはいけないということです。おそらく、WCF側でメンバシッププロバイダを実装することを検討する必要があります。 - ユーザーがMVCアプリケーションにログインすると、MVCメンバーシッププロバイダのValidateUserメソッドがWCF側のValidateUserを呼び出します。 – Jed

関連する問題