簡體   English   中英

如何使用 .Net 構建安全的 Web 服務?

[英]How do I build a secure webservice with .Net?

我需要構建一個簡單的 Web 服務來通過 Internet 將數據輸入和輸出 HR 系統(這是一個托管解決方案)。 我正在使用 IIS 和帶有.Net 2.0 的 ASP.Net。

經過研究,有幾種方法可以確保 Web 服務的安全 - 我正在就選擇哪種方法提出一些建議,並對優缺點提出一些看法。

這些是我知道的方法:

SSL 上的 SoapHeaders

在 Soap header 中發布 UID/PWD 並實現 SOAP 擴展( 鏈接)。
實現起來非常簡單,並且應該在 SSL 上非常安全。 由於相對簡單,這是迄今為止我的首選選擇。 另外,由於歷史原因,我需要使用 VBScript 的 web 服務,所以能夠處理簡單的 SOAP 是一個額外的好處。 但是,有什么注意事項嗎? 我會讓客戶抱怨這是一個安全風險嗎?

將 WCF 與 TransportWithMessageCredential 一起使用

我找到了很多關於WS的舊文章,如果我沒記錯的話,這就是WCF現在提供的內容嗎? 這個微軟鏈接有一個入門。
如果我理解正確,這將在客戶端和服務器之間使用基於證書的安全性進行身份驗證。 這是正確的還是我完全錯了?
我懷疑這將是一項更大的工作,至少在實施方面是這樣。 此外,我將無法直接從 VBScript 訪問 Web 服務,因此必須編寫一個 dll 它調用調用,然后在本地部署 - 對嗎?
這甚至在.Net 2.0 中可用嗎?

其他方法

  • 我可以禁止匿名訪問 asmx 文件並使用依賴 IIS 通過質詢/響應進行身份驗證。 這在我的場景中實際上是實用的,但感覺非常不優雅(也不知道如何從 VBScript 進行這項工作)。
  • 將 UID 傳遞給方法調用是 SoapHeader 的一個可憐的表親,所以我不會使用它。

對於解決此問題的最佳方法的任何建議,我將不勝感激。 如果有人有充分的理由說明為什么 Soap 標頭是安全的,那么我很想聽聽它,因為這似乎是最簡單的使用方法,只要它“足夠安全”

您應該強烈考慮使用 IIS 和 Windows 來提供身份驗證。 IIS 可以 map 向 AD 用戶(NTLM、證書、Kerberos 等)傳入請求。 從那里,您將擁有一個WindowsPrincipal ,您可以使用它來要求用戶在一個組中。 如果您不介意將組名編譯到代碼中,您甚至可以在服務方法上使用PrincipalPermissionAttribute ,這樣它就完全是聲明性的。

通過使用 Windows,您可以獲得處理所有安全問題的平台。 密碼不會以純文本形式傳輸,您也不需要創建和指定自己的質詢/響應類型系統 (yuck)。 不同的客戶端可以以不同的方式進行身份驗證(一些需要證書,另一些則允許 NTLM)。

最后,您將得到更少的代碼,因為您可以使用 Windows 來管理用戶,並使用 .NET 框架來執行安全檢查。

編輯:

也許您認為保護 ASMX 的安全是 hacky,因為這是您正在查看的唯一步驟? 我同意。 僅依賴於您拒絕匿名的 Web 服務聽起來確實很弱。 身份驗證完成,Web 服務代碼本身應要求組成員身份。 這樣,如果您錯誤地配置了服務器,就會使其無法訪問,而不是不安全。

使用 WCF。 它需要 .NET 3.0 或更高版本(也可以使用 3.5 SP1),但這只是 .NET 2.0 與幾個服務包和一些新組件,所以它是安全的。

我建議不要再使用 ASMX web 服務進行新開發,除非別無選擇。

您可能已經閱讀過“WSE”或“Web 服務擴展”。 這些都是過時的,並且是對 ASMX web 服務的一系列擴展,以實現 WS-* 協議集。 微軟由此了解到 ASMX 平台的可擴展性不夠,因此創建了 WCF(Windows Communication Foundation)。 像瘟疫一樣避免 WSE。

我上周遇到了這個問題,我選擇了 SOAP 和 SSL。 我還將它與數據的 MD5 加密密鑰結合起來。 當然,這僅適用於您同時是服務器和客戶端的“所有者”。

WCF 是通往 go 的方式。 它提供了許多可能的安全解決方案,一些基於標准且可互操作,一些 .NET 或 Windows 特定。

快速搜索“WCF 安全”將為您提供大量資源,但我建議您從這篇文章開始:Michele Leroux Bustamante的“WCF 安全基礎”

您還可以嘗試 2 路 SSL 和 IIS,這將讓您確保客戶是他們所說的人,通過線路加密數據,並且還運行 Z2567A5EC9705EB7AC2C2C984033E068 基於不同用戶提供的服務的證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM