我需要找到一種方法來認證/授權WCF服務中的用戶。我正在使用存儲用戶憑據的外部認證服務。WCF用戶認證和授權
例如, 「Bob使用我們的登錄方法,我們將憑證發送給認證服務,服務讓我們知道這些憑證是否正確。」 如果Bob發送另一個請求,我們需要知道Bob是否已經過身份驗證。
現在正在客戶端上創建一個會話,但它需要移動到服務器端。我們不能依賴客戶的安全。
這可以通過使用安全cookie解決,或者你們有沒有更好的建議?
編輯!我只能用認證服務器不能訪問它
我需要找到一種方法來認證/授權WCF服務中的用戶。我正在使用存儲用戶憑據的外部認證服務。WCF用戶認證和授權
例如, 「Bob使用我們的登錄方法,我們將憑證發送給認證服務,服務讓我們知道這些憑證是否正確。」 如果Bob發送另一個請求,我們需要知道Bob是否已經過身份驗證。
現在正在客戶端上創建一個會話,但它需要移動到服務器端。我們不能依賴客戶的安全。
這可以通過使用安全cookie解決,或者你們有沒有更好的建議?
編輯!我只能用認證服務器不能訪問它
你所描述的問題是一個衆所周知的一個有(至少)兩個標準化解決方案。
聯邦使用WS-信任
第一個選項是一個基於SOAP的一個使用基於WS-信任活性聯合。在這個解決方案:
在這種模式下,通常的術語是:
這聽起來很複雜,但它在使用Windows Identity Foundation的.Net和WCF中得到很好的支持。有很多樣本可用(可能都是)可以通過WCF配置而不是代碼完成。
這非常適合客戶端具有加密功能的場景(如.Net客戶端)以及存在良好框架(如WIF)的場景。對於低規格客戶如瀏覽器和某些電話,或者您無法控制客戶的情況,這種做法並不好。
它通常用於企業場景,包括企業到企業聯合。它在互聯網場景中使用較少。
它的優勢是
概述可以在這裏找到:
http://msdn.microsoft.com/en-us/magazine/ee335707.aspx
而谷歌會告訴你其它更多演練和示例。使用OAuth 2
在該溶液
聯邦:
在OAuth術語:
再次,這聽起來很複雜,但它是.NET中還算不錯的支持。雖然目前可能不如WS-Trust方法。它受Windows Azure AD和客戶端的支持,使用Windows Azure身份驗證庫。其他服務可以使用這種方法 - 例如Facebook的。
這種運作良好,其中
它是非常常用的互聯網應用程序,您作爲WCF服務的所有者不一定知道用戶或客戶端。在某些方面它不是一個完整的標準(例如,它沒有精確定義認證的發生過程),因此切換到其他授權服務器並不那麼容易。
它的優勢是:
這個官方.NET支持在Windows Azure Active Directory認證庫
http://msdn.microsoft.com/en-us/library/windowsazure/jj573266.aspx
還有其他開源組件太多,如DotNetOpenAuth
哪種解決方案是最適合你的,主要取決於你的AUTHENT的性質我會說服務服務。無論你是在企業還是互聯網場景。如果認證。服務可以很容易地適應WS-Trust安全令牌服務(STS),那麼這將是一條很好的路線。如果將一些Web UI添加到身份驗證。服務是可行的,OAuth可能會更好。或者,如果兩個選項都不可行,那麼您可以借用一種方法的模式,並使用該模式,而不必採用完整的標準。
祝你好運!
謝謝你的這篇精心設計的文章。我忘了提及我沒有訪問驗證服務器,我只能使用它。所以我會嘗試製作我自己的令牌系統 – David
LOL,好的。正如我所說,模式應該是有用的:o) –
我很抱歉兄弟 – David