2009-12-14 65 views

回答

2

一個非常重要的安全性的考慮是,在WCF安全工作在兩個層面上

信息安全

  • 用戶名/密碼
  • 令牌
  • Windows憑據
  • 客戶端證書
  • 等等

交通運輸安全

  • 服務證書
  • 等。(我真的不知道其它COS香港專業教育學院只用1)

其良好的做法是使用傳輸層安全保護,一般通信和消息層給用戶一個有效的用戶身份驗證,並批准他的特權。

無論你在每次調用進行身份驗證,如果服務合同被定義爲確定一個

  • 辛格爾頓
  • PerService
  • PerCall

我建議使用PerCall作爲其最有效硬件資源的使用,但這取決於你的情況。

0

我知道一個我使用的:它使用ASP.NET成員身份框架來與WCF進行身份驗證。我目前正試圖讓OpenID和其他提供者進入系統,這讓我重新思考這種類型的身份驗證的ASP.NET成員資格。

但是,如果你正在控制自己的賬戶,我會去ASP.NET成員。

1

WCF提供了許多認證和後續授權機制。

至於身份驗證:如果您在局域網內的企業防火牆之後,使用直接的Windows憑據是最簡單的 - 不需要混亂的用戶名/密碼來記住和發送,它只是可以開箱即用。這可以與針對Windows組成員系統的授權檢查相結合,例如,只允許某些用戶組執行操作。

如果您正在尋找面向互聯網的服務,您可以選擇用戶名/密碼方案或證書。標準的用戶名/密碼方案可以根據ASP.NET 2.0爲我們帶來的ASP.NET成員資格系統進行檢查,無論是用於身份驗證(成員資格)還是授權(角色提供者)。

如果您處理的是一組非常有限的外部用戶,例如,商業夥伴等。證書必須「帶外」傳遞給客戶,例如在其他方面,通過磁盤或其他方式。但是一旦安裝完成,它就可以無縫使用和驗證。

朱瓦爾·洛(「編程WCF服務」的作者)對MSDN上Declarative WCF Security中,他強調了他的五個安全方案,如何使用和保護他們一個偉大的文章,他甚至有一個聲明擴展WCF做這隻需要將一個屬性應用到您的服務合同 - 非常聰明!

1

我最近爲某些媒體預覽服務實現了一個相當大的WCF服務層。由於我們在互聯網上公開它,因此Windows身份驗證不是一種選擇。由於我們已經有了現有的用戶/角色系統,我們也決定不使用ASP.NET會員供應商。

我最終實現了自定義身份驗證/授權模塊並使用SSL作爲傳輸層安全元素。使用WCF屬性,我可以使用標準WCF基礎結構檢查角色權限。

鏈接,幫助我對我的方式得到的目標:

http://blogs.msdn.com/pedram/archive/2007/10/05/wcf-authentication-custom-username-and-password-validator.aspx

http://www.leastprivilege.com/CustomPrincipalsAndWCF.aspx

http://www.samuelotter.com/node/7

相關問題