2012-03-01 28 views
3

我開發了一個基於ASP.NET身份驗證提供程序的表單身份驗證構建的MVC應用程序。將ASP.NET成員資格證書從MVC應用程序傳遞給WCF應用程序

同一個服務器還包含一個指向與MVC應用程序相同的數據庫的WCF應用程序(包括所有的aspnet表)。我想檢查服務中用戶屬於哪個組。

如何將憑據從MVC應用程序傳遞到WCF應用程序?

回答

1

好了,你可以

  • 開發的MVC應用程序的WCF應用程序進行交互的任何類型的API(而這將讓你部署兩個THI ngs無論你想在未來),

  • 嘗試並讓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(已通過身份驗證的用戶)。

例子:

在你的WCF應用程序,你可以發現該驗證的用戶,然後從那裏的方法,查詢您的數據庫來獲取用戶的成員組:

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 

} 
+0

我沒有通過'System.Threading.Thread.CurrentPrincipal.Identity'獲得對用戶的引用。 'Name'是空白的,'IsAuthenticated'是假的。請注意,MVC應用程序和WCF應用程序在IIS中是兩個獨立的.NET應用程序(但它們確實共享相同的AppPool)。 – NetWave 2012-03-02 08:04:21

+1

對不起 - 我解釋你的OP錯誤。我以爲你的MVC應用程序通過WCF端的一個成員提供程序登錄到WCF應用程序。這就是說,我不知道如何將您的MVC憑據傳遞給您的WCF。如果有辦法,我的想法是你不應該_pass_憑證(隱式登錄到另一個系統對我來說看起來並不安全)。也許你應該考慮在你的WCF端實現一個Membership Provider - 然後,當用戶登錄到你的MVC應用程序時,你的MVC Membership Provider的ValidateUser方法將在你的WCF端調用ValidateUser。 – Jed 2012-03-02 15:59:39

相關問題