2011-01-07 138 views
1

我有一個情況我有一個Web服務,數據服務(圖像,媒體等)的需要,以便它只能通過相應的Silverlight客戶端進行訪問。可能有很多,有些可以訪問某些媒體,有些可以訪問其他媒體。身份驗證+ Authroizing Silverlight客戶端以WCF的Web服務

網絡服務存在,它是當前的.asmx,但我們將要升級到WFC。

到目前爲止,閱讀大量關於WCF和授權的博客後,我來到這個想法:

  1. 每個Silverlight客戶端在其配置的某處有一個客戶端密鑰。
  2. Web服務服務器通過SSL進行安全保護,因此客戶端ID被加密爲Web服務參數。
  3. 驗證通過客戶端密鑰完成。
  4. 授權通過客戶端密鑰完成。

據我所知,我認爲這應該是安全的,但請隨時戳洞!

是錯誤我是從我的研究有這麼多有利於對使用WCF進行身份驗證和授權,但對我來說,只是感覺我需要什麼太複雜的唯一的事情!更不用說理解複雜的客戶端配置文件如何適用於訪問WCF服務的Silverlight應用程序。

無論哪種方式,從我的理解,使用WCF認證至少需要一個用戶名和密碼或證書,這兩種感覺真的很笨拙,在剛剛給予了一個很好的客戶端密鑰來代替。

我的想法是否安全可靠,還是應該堅持我的WFC學習,因爲框架是更好的解決方案?

如果安全WCF框架是首選,有沒有高水平的建議可以給你我爲我需要保護我的web服務什麼樣的流程?

期待聽到人們的意見和經驗! :)

非常感謝!

安迪

回答

0

這種方式並不安全,因爲Silverlight是客戶端技術,這樣既SL控制,並在用戶計算機的配置存儲。所以任何用戶都可以自由訪問/更換密鑰。
自定義會話是處理任務最安全的方式。
例如:
認證/授權可以使用標準(或自定義,您應該隨時實施某些特定的提供者)角色/成員資格提供者來實現。客戶端通過身份驗證後,會收到服務器生成的會話令牌(例如guid)。服務器端數據庫中的相同guid存儲(例如存儲所有角色,用戶等的數據庫中)。
每個會話令牌都已到期(使用DB代理/任務/ sheduler從數據庫中刪除過期的密鑰)。
因此,每次客戶端請求某些資源時,它都會向服務器發送其會話令牌以及其他請求參數。在數據庫中接收到請求服務器搜索相同的會話令牌後,如果令牌存在,請提供對所請求的資源的訪問。否則認證失敗。

自定義會話非常複雜,但在同一時間處理身份驗證操作的最安全方式。隨意問我,如果你有關於它的一些問題。

+0

啊,關於SL是客戶端的好點!完全忘記了影響。我想我理解你的想法,星期一我會多一點想一想。 :) – Andy 2011-01-08 12:13:06

相關問題