2011-05-25 41 views
2

基本上,我有以下情況和信息:WCF身份驗證 - 驗證用戶/傳遞一次,然後再驗證其他方式?

  • 我們正在使用HTTPS。
  • 我們想通過用戶/用戶在第一次登錄時對用戶進行身份驗證。
  • 通過身份驗證後,我希望以後對其他服務(不是登錄服務)的任何調用使用用戶名和某種會話(如果密碼在會話中間發生變化)。
  • 我想確保我的會話可以超時並以某種方式控制它們,如果用戶試圖調用某個服務並且他們沒有會話,他們會得到一個錯誤(因爲他們沒有登錄)。不知道是否有WCF內置的方式來這樣做會話,或者如果我必須做一些自定義的數據庫。
  • 我想我們想使用WSHttpBinding(不是BasicHttpBinding),90%肯定對此。

我似乎無法弄清楚如何做到這一點。通常我會找到有關client.ClientCredentials.UserName.UserName = usernameclient.ClientCredentials.UserName.Password = password的客戶端代碼的信息。但是,這只是不起作用,因爲我的服務器檢查什麼?我試圖抓取這些信息並根據用戶/通行證數據庫進行驗證。我不打算使用Windows身份驗證或這種排序(因爲我不在乎誰登錄到計算機,只是誰登錄到應用程序)。

回答

2

您想要使用安全令牌服務(STS)進行身份驗證並獲取安全令牌(可能是SAML),以識別可以傳遞給其他服務的用戶,並且他們可以使用身份信息來識別和授權,因爲他們相信STS已經預先驗證了用戶的身份。

這是一個很大的議題討論,所以我建議searching for WCF STS和做更多的研究,但這絕對是我建議去的方向。如果你打算建立自己的STS實現,我還建議尋找使用Windows Identity Foundation (WIF)組件來減輕你的開發工作。

Here's the download link for WIF v1.0這是此答案的最新版本。

+0

它是免費的嗎?因爲當我谷歌的WIF它帶我到一個MSDN頁面,說「下載評估」... – michael 2011-05-26 07:28:21

+0

100%免費。添加v1下載鏈接來回答。 – 2011-05-26 13:47:02