2012-05-04 96 views
1

使ASP.NET Web應用程序與WCF服務通信的身份驗證選項是什麼?ASP.NET和WCF身份驗證選項

場景:

  1. 用戶輸入自己的用戶名和密碼在ASP.NET表單。
  2. ASP.NET需要將其傳遞給WCF以對用戶進行身份驗證。
  3. 如果通過驗證,用戶可以在網站上執行操作。每個操作都需要將數據發送到不同的WCF操作。 WCF需要知道用戶在每次通話中的身份。

最簡單的解決方案是將用戶名/密碼存儲在ASP.NET會話狀態中。但是,這是不安全的,因爲密碼存儲在服務器的內存中。

我寧願不使用證書來認證服務的ASP.NET「客戶端」,因爲除了ASP.NET之外,這個WCF可能會被另一個客戶端使用。

到目前爲止我所見過的最好的建議是使用Windows Identity Foundation(WIF)。看來這需要一個STS。根據MSDN,微軟似乎並不建議通過Visual Studio設置STS。不能保證STS在部署環境中可用,因爲某些環境可能使用Active Directory,而其他環境可能有自定義用戶存儲。是否可以設置一個自定義的STS來對照自定義用戶存儲進行身份驗證?我在查找文檔時遇到問題。

除了使用WIF還有其他選擇嗎?自定義WCF身份驗證服務如何返回可用於對主WCF服務進行身份驗證的令牌?

回答

1

這樣做的標準方法是使用WIF與Microsoft的STS viz。 Active Directory聯合身份驗證服務v2.0(ADFS)。

有許多定製的STS可用,例如, Identity Server。這使用SQL DB作爲屬性存儲。它是開源的,因此可以根據您的需要進行調整。

您可以創建自己的自定義屬性存儲:AD FS 2.0 Attribute Store Overview

TechNet WIF/WCF:WIF and WCF