2010-08-11 63 views
2

我有一個位於WCF服務頂端的MVC網站。 WCF服務也可通過使用消息安全和證書的用戶名/密碼認證訪問互聯網。這是安裝和工作。ASP.NET到WCF - passthrough安全性?

使用成員資格API,網站和服務都使用相同的成員資格商店。

用戶可以使用相同的憑據登錄到網站或服務。但是,當網站調用服務時,它需要傳遞當前登錄用戶的憑據。我可以從

Membership.GetUser().UserName 

但我無法獲得密碼!

是否有另一種基本上將網站用戶憑證傳遞給服務的方法?

任何幫助非常感謝...

回答

4

這是非常奇怪的架構。爲什麼要驗證用戶兩次?只需爲您的MVC設置不同的端點(net.pipe)並避免第二次身份驗證。如果您需要了解服務上已通過身份驗證的用戶,則您有兩種選擇依賴於您的MVC應用程序的信任:

  1. 將用戶名作爲自定義消息標題發送。缺點:如果黑客繞過您的身份驗證,她可以用任何用戶名稱撥打您的服務。
  2. 不要在MVC中直接驗證用戶。而是始終在WCF中驗證用戶身份,併爲MVC創建自定義成員資格提供程序,這將提供身份驗證服務。該服務還會爲已通過身份驗證的用戶生成令牌,並且每個操作都會驗證該令牌。缺點:複雜性。

編輯:有related post有類似的問題。你可以找到另外一個建議。