2010-11-19 238 views
4

我們有一個Web服務(C#中的WCF),直到現在,它已經在內部網上使用過。展望未來,我們希望向互聯網開放。
顯然我們擔心淘氣的人不能訪問接口。在WCF中確保這一點的最佳實踐方法是什麼?它是WSS嗎?
我假設某種登錄界面和客戶端必須使用每個調用返回的令牌?WCF:Web服務登錄/身份驗證:HowTo?

回答

3

你已經基本上六個選項:

  • Windows帳戶 - 大內網,在互聯網的情況沒有那麼大(內置,僅配置)對ASP

  • 用戶名/密碼.NET會員系統:您仍然需要保留有效用戶的數據庫;取決於你想要做什麼,這可能適用於你(內置,僅配置 - 你需要跟蹤你的用戶羣)

  • 客戶端機器上的證書調用:只有那些有權利的機器證書被允許進入;對於一個封閉的用戶羣來說很好,在一般的面向互聯網的場景中並不是那麼好(內置,僅配置)

  • 某種必需的頭文件 - 檢查數據庫(例如「有效頭文件令牌」),只是通過例如檢查計算校驗和或任何知道你的「祕密」頭的人都可以調用(內置,需要一點點編碼來提取和檢查頭)

  • 一些自定義解決方案 - 你可以定義您自己的身份驗證/授權方案,並根據您的喜好進行自定義;需要在你身邊的一些代碼 - 但給你最大的靈活性(自定義代碼一路)

  • 沒有檢查 - 只要把它開放給任何人(內置,僅配置)

WCF guru extraordinaire,Juval Lowy,在MSDN雜誌上有一篇很棒的文章:Declarative WCF Security - 也許這可以給你一些額外的提示和指針。他基本上定義了五種情況,並討論了他爲每種情況推薦的解決方案(並且將這些東西烘焙成現成的基於屬性的聲明性框架)

+0

您不認爲使用WIF進行基於聲明的訪問控制是一種選擇嗎?通過聯合,客戶將能夠控制哪些用戶可以訪問遠程系統。如果系統暴露重要數據,這通常是裁員等方面的一個非常好的賣點。 – 2010-11-19 16:36:47

+0

@Klaus Byskov Hoffmann:坦率地說,我對真正的基於索賠的系統沒有太多的見解。到目前爲止,他們似乎在較小的環境中工作得並不好 - 或者在這種情況下他們會變得過分。對於擁有多種登錄機制的全球企業來說,它們非常棒 - 但單一服務/公司具有哪些優勢? – 2010-11-19 16:46:19

+0

我明白你來自哪裏。但微軟確實似乎正在將他們的產品組合與基於聲明的授權結合起來。 SqlServer和Sharepoint都有支持它的即將發佈的版本,並且Active Directory已經內置了STS角色。所以我認爲人們不得不在某個時候接受這種技術。無論如何,我只是推薦它,因爲我自己一起工作,而且我留下的印象是,讓人們迴避的是一種誤解,認爲它很難實現。它不是。 – 2010-11-19 16:53:40

2

您應該檢查Windows Identity Foundation(WIF)。通過WIF,您可以構建一個安全令牌服務來處理認證部分,這樣您的WCF服務只需處理授權。這是一個相當大的話題,所以我建議你看一下whitepapers並決定是否要使用它,然後再回來問一些更具體的問題。

+0

我同意。這絕對是要走的路,不僅適用於WCF服務,還適用於所有需要認證服務的Web應用程序。基於索賠的方法將認證機制從應用程序中分離出來(並且本質上是可重用的),並且爲授權提供了更加靈活的基礎。最重要的是,WIF讓它很容易做到。 – 2010-11-19 17:08:14