2012-02-16 76 views
3

我是新來的所有網頁的事情,所以這個問題似乎微不足道,但不是我。實現邏輯是:ASP.NET MVC 3連接到安全的遠程WCF服務

ASP.NET MVC 3 - > WCF服務 - > SQL數據庫

身份驗證和授權的ASP.NET MVC3使用自定義成員資格和角色提供者,因爲所有的日誌中詳細信息存儲在SQL數據庫。 也需要對WCF服務實施授權。它使用與ASP.NET MVC 3相同的憑據。 我已經使用自定義的UsernameValidator實現了WCF安全性的用戶名類型。

<security mode="TransportWithMessageCredential"> 
    <transport clientCredentialType="None" /> 
    <message clientCredentialType="UserName" /> 
</security> 

這是第一次,當用戶登錄到網站,因爲有憑據。但是,在ASP.NET MVC 3上的FormsAuthentication.SetAuthCookie之後,用戶名就是我所擁有的。由於MVC方法由多種控制器組成,因此我必須在每個控制器上創建WCF客戶端實例。但沒有證書,這是沒有意義的。

 [Authorize] 
     public class MyController : Controller 
     { 
      private WebServiceClient ServiceClient = new WebServiceClient(); 

      public ActionResult Index(string userName) 
      { 
       var model = ServiceClient.GetDataList(); 
       return View(model); 
      } 
     } 

新實例不使用現有會話。它創建一個帶有空白憑證的新賬戶。

  • 是否有創建每個會話的WCF客戶端實例的安全方式?
  • 或WCF接受ASP.NET身份驗證的選項?
  • 什麼是附加asp.net身份驗證WCF 請求的最佳方式?
+0

這裏有一個看看這篇文章:http://stackoverflow.com/questions/3460435/asp-net-to-wcf-passthrough-security,更是這個職位在這裏:http://stackoverflow.com/questions/3451578/wcf-authentication-using-sql-membership-provider – Nope 2012-02-16 13:16:15

+0

感謝您的鏈接。第一個非常有用。 – Margo 2012-02-17 10:41:25

+0

不錯的一個。很高興你找到了解決方案。 – Nope 2012-02-17 13:25:19

回答

0

在閱讀the suggested link之後,決定將ASP.NET MVC服務器和WCF服務保留在一臺機器上,並使用net.pipe端點進行通信。謝謝。