我們有一個Web服務(C#中的WCF),直到現在,它已經在內部網上使用過。展望未來,我們希望向互聯網開放。
顯然我們擔心淘氣的人不能訪問接口。在WCF中確保這一點的最佳實踐方法是什麼?它是WSS嗎?
我假設某種登錄界面和客戶端必須使用每個調用返回的令牌?WCF:Web服務登錄/身份驗證:HowTo?
回答
你已經基本上六個選項:
Windows帳戶 - 大內網,在互聯網的情況沒有那麼大(內置,僅配置)對ASP
用戶名/密碼.NET會員系統:您仍然需要保留有效用戶的數據庫;取決於你想要做什麼,這可能適用於你(內置,僅配置 - 你需要跟蹤你的用戶羣)
客戶端機器上的證書調用:只有那些有權利的機器證書被允許進入;對於一個封閉的用戶羣來說很好,在一般的面向互聯網的場景中並不是那麼好(內置,僅配置)
某種必需的頭文件 - 檢查數據庫(例如「有效頭文件令牌」),只是通過例如檢查計算校驗和或任何知道你的「祕密」頭的人都可以調用(內置,需要一點點編碼來提取和檢查頭)
一些自定義解決方案 - 你可以定義您自己的身份驗證/授權方案,並根據您的喜好進行自定義;需要在你身邊的一些代碼 - 但給你最大的靈活性(自定義代碼一路)
沒有檢查 - 只要把它開放給任何人(內置,僅配置)
WCF guru extraordinaire,Juval Lowy,在MSDN雜誌上有一篇很棒的文章:Declarative WCF Security - 也許這可以給你一些額外的提示和指針。他基本上定義了五種情況,並討論了他爲每種情況推薦的解決方案(並且將這些東西烘焙成現成的基於屬性的聲明性框架)
您應該檢查Windows Identity Foundation(WIF)。通過WIF,您可以構建一個安全令牌服務來處理認證部分,這樣您的WCF服務只需處理授權。這是一個相當大的話題,所以我建議你看一下whitepapers並決定是否要使用它,然後再回來問一些更具體的問題。
我同意。這絕對是要走的路,不僅適用於WCF服務,還適用於所有需要認證服務的Web應用程序。基於索賠的方法將認證機制從應用程序中分離出來(並且本質上是可重用的),並且爲授權提供了更加靈活的基礎。最重要的是,WIF讓它很容易做到。 – 2010-11-19 17:08:14
- 1. Symfony2 - 身份驗證登錄.....服務
- 2. ASP.Net Windows身份驗證 - 用戶身份登錄到服務器
- 3. 身份驗證登錄
- 4. Symfony2登錄身份驗證
- 5. 登錄身份驗證
- 6. ASP.Net登錄身份驗證
- 7. NT身份驗證登錄
- 8. Facebook身份驗證登錄
- 9. 登錄身份驗證Asp.net
- 10. 登錄身份驗證
- 11. Google身份驗證 - 登錄
- 12. Facebook登錄身份驗證
- 13. PHP登錄身份驗證
- 14. Symfony2登錄身份驗證
- 15. Sitecore的身份驗證使用API身份驗證/登錄
- 16. WSO2身份服務器身份驗證
- 17. DDD身份驗證服務
- 18. 身份驗證服務
- 19. Web服務身份驗證
- 20. Angular2身份驗證服務
- 21. 身份驗證服務器
- 22. 身份驗證和服務
- 23. WCF身份驗證服務
- 24. 身份驗證WSDL服務
- 25. Codeigniter Rest服務器摘要或基本身份驗證登錄
- 26. SQLalchemy - 使用SQL服務器身份驗證登錄
- 27. Google登錄Nodejs中的Android服務器端身份驗證
- 28. iPhone App用戶登錄使用服務器身份驗證
- 29. AngularJS登錄示例 - 修改服務器身份驗證
- 30. 新服務器上的Windows身份驗證登錄失敗
您不認爲使用WIF進行基於聲明的訪問控制是一種選擇嗎?通過聯合,客戶將能夠控制哪些用戶可以訪問遠程系統。如果系統暴露重要數據,這通常是裁員等方面的一個非常好的賣點。 – 2010-11-19 16:36:47
@Klaus Byskov Hoffmann:坦率地說,我對真正的基於索賠的系統沒有太多的見解。到目前爲止,他們似乎在較小的環境中工作得並不好 - 或者在這種情況下他們會變得過分。對於擁有多種登錄機制的全球企業來說,它們非常棒 - 但單一服務/公司具有哪些優勢? – 2010-11-19 16:46:19
我明白你來自哪裏。但微軟確實似乎正在將他們的產品組合與基於聲明的授權結合起來。 SqlServer和Sharepoint都有支持它的即將發佈的版本,並且Active Directory已經內置了STS角色。所以我認爲人們不得不在某個時候接受這種技術。無論如何,我只是推薦它,因爲我自己一起工作,而且我留下的印象是,讓人們迴避的是一種誤解,認爲它很難實現。它不是。 – 2010-11-19 16:53:40