今天,我爲我的WCF服務實現了一個自定義身份驗證提供程序。它可以確定我的用戶是否有效,就像預期的一樣。在WCF服務中檢索當前已通過身份驗證的用戶
所以,現在我有這個類:
public class MyCustomValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
User apiUser = User.Login(userName, password);
// other logic goes here.
}
}
我的應用程序的行爲取決於用戶可以訪問哪些對象。那麼,我怎樣才能讓我的用戶對象從這裏到我的服務類?我沒有看到明顯的方式,因爲我的服務類不像ASP.NET控制器那樣默認從任何東西繼承。
我的第一本能是在MyCustomValidator中設置一個靜態參數,然後從那裏讀取它,但我懷疑可能發生競態條件。任何人都可以證實或否認我的懷疑嗎?
最重要的是:有沒有更好的方法來做到這一點?這是我第一次使用WCF,所以我不知道這裏涉及的最佳實踐。
謝謝你的時間。
您的驗證肯定是錯誤的,因爲它需要訪問用戶的明文密碼。絕大多數身份驗證方案(摘要,NTLM,Kerberos,OAuth)從不以明文形式傳遞密碼,他們通過挑戰和摘要響應(即通過哈希)建立密碼所有權。 – 2010-09-07 17:11:35