2009-12-02 217 views
4

我將創建一個Web服務,將通過網絡傳遞機密信息。安全的網絡服務

什麼是保護Web服務的最佳方式? 我怎麼知道請求信息的應用程序是否是它所說的信息,而不是另一個使用其他用戶名和密碼的應用程序?

回答

3

使用WCF爲您的Web服務!它擁有噸的安全功能:

可以

  • 通過證書保護您的客戶 - 只有那些具備相應的證書將被允許獲得他們的呼叫處理

  • 通過安全客戶端在您的內部Active Directory域中查找它們 - 只有擁有AD帳戶的用戶才能獲得處理的請求

  • 使用自定義用戶名/密碼保護您的客戶劍,你可以看一下對任何你想要的(這是最靈活的,同時也是最複雜的選項,並提供了最具潛力的失敗,如果你得到的東西是錯誤的)

此外,利用WCF,你也有許多選項來保護客戶端和服務之間的傳輸,或者對消息進行加密和簽名。

查看WCF Developer Center是WCF所有事情的一個很好的起點。

如果您對安全可靠地編程WCF服務非常重視,請獲取Juval Lowy的Programming WCF Services書 - 它是WCF的聖經。

alt text http://ecx.images-amazon.com/images/I/41H2u13a9bL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

+0

marc_s,你的所有這些點都可以在普通的web服務中完成......否? – 2012-11-20 08:24:22

+0

@RoyiNamir:什麼是* plain * web服務? – 2012-11-20 08:47:00

+0

對不起我的意思是定期的web服務 – 2012-11-20 08:48:26

1

我已經在過去一次或兩次做到了這一點:

  • 使用SSL
  • 編寫web服務,要求其從web服務的方法獲取的令牌。
  • 將令牌從需要登錄名和密碼的方法返回。
  • 經過一定數量的web服務請求或隨機間隔後,更改所需的令牌,從而強制重新進行身份驗證。

  • 如果您想要,使用雙方理解的加密方法對ssl流中的數據進行加密。 (如果你是偏執狂)

1

你不寫你的意圖利用其實現技術,所以讓我推薦你使用Windows通訊基礎(WCF),而不是ASMX Web服務開始。

使用WCF,您可以在許多不同的綁定中進行選擇,其中許多綁定提供數據保護。總體來說,有兩種不同風格的數據保護的web服務:

  • 運輸保護,其中的加密形式傳輸機制本身提供保護。這個最有名的版本是HTTPS/SSL。但是,請注意,除非您使用客戶端證書,否則該服務不能保證客戶端是它所說的。
  • 消息保護,其中消息本身被加密和簽名。這些消息可以通過其他未受保護的網絡並仍然受到保護。

WsHttpBinding根據開放標準提供消息保護。那就是我要開始的地方。