[英]WCF User Authentication & Authorization
我需要找到一種方法來驗證/授權WCF服務中的用戶。 我正在使用外部身份驗證服務來存儲用戶的憑據。
例如。 “Bob使用我們的loginmethod,我們將憑據發送到身份驗證服務,該服務讓我們知道這些憑據是否正確。” 如果Bob發送另一個請求,我們需要知道Bob是否已經過身份驗證。
現在正在客戶端上創建會話,但它需要移動到服務器端。 我們不能依賴客戶的安全性。
這可以通過使用安全cookie來解決,還是你們中有人有更好的建議?
編輯! 我只能使用身份驗證服務器而無法訪問它
您所描述的問題是一個眾所周知的問題(至少)有兩個標准化解決方案。
使用WS-Trust的聯合
第一個選項是基於SOAP的選項,它使用基於WS-Trust的活動聯合。 在此解決方案中:
在這個模型中,通常的術語是:
這聽起來很復雜,但在使用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 AD身份驗證庫中
http://msdn.microsoft.com/en-us/library/windowsazure/jj573266.aspx
還有其他開源組件,例如DotNetOpenAuth
哪種解決方案最適合您,主要取決於我所說的身份驗證服務的性質。 無論您是在企業還是互聯網場景中。 如果是auth。 服務可以很容易地適應成為WS-Trust安全令牌服務(STS),那么這將是一條很好的途徑。 如果向auth添加一些Web UI。 服務是可行的,OAuth可能會更好。
或者,如果兩個選項都不可行,您可以從一種方法借用模式,並在不使用完整標准的情況下使用它。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.