我建立,將有網絡,窗口和手機(iPhone)客戶端應用程序,我想使用WCF實現服務層和不熟悉WCF我有點在涉及安全,認證和授權時感到困惑。WCF安全的Web,Windows和移動客戶端
我通常喜歡的是重新使用盡可能多的ASP.Net成員部件儘可能的給我節省時間編寫代碼,因爲它是繁瑣和重複。這是一個好方法,還有什麼替代方法?
誰能給我指導如何最好地實現我所期待的?
我建立,將有網絡,窗口和手機(iPhone)客戶端應用程序,我想使用WCF實現服務層和不熟悉WCF我有點在涉及安全,認證和授權時感到困惑。WCF安全的Web,Windows和移動客戶端
我通常喜歡的是重新使用盡可能多的ASP.Net成員部件儘可能的給我節省時間編寫代碼,因爲它是繁瑣和重複。這是一個好方法,還有什麼替代方法?
誰能給我指導如何最好地實現我所期待的?
如果在「ASP.NET兼容模式」運行WCF(這是在代碼中一個屬性,使它和配置的一行來啓用它),你可以使用所有常見的ASP.NET安全機制與WCF爲-is。請參閱http://msdn.microsoft.com/en-us/library/aa702682.aspx
查看本系列文章WCF security scenarios,它解釋了許多您應該接受的最佳實踐。
你基本上用於保護客戶端和服務器之間的通訊三種選擇:
通常情況下,當您確信只有一個單跳時,您會傾向於使用傳輸級別(TCP/IP級別)安全性在您的客戶和您的服務之間,例如在防火牆後面的企業局域網環境中。這是最快的 - 在公司(Windows)局域網環境中使用netTcpBinding
。
如果您有潛在的多跳(例如路由器,存儲轉發中介等) - 通常是您的互聯網/外部客戶端場景 - 那麼傳輸級別的安全性將不再起作用,因此您可能必須使用消息級別的安全性來加密和簽署消息本身,因爲它從客戶端傳輸到服務。
現在,這只是關於保護消息的方式。
至於認證(知道他是誰打電話給你的),你通常可以在你的局域網/公司使用Active Directory/Windows憑據,或者使用外部客戶端的用戶名/密碼(或者可能用於同一目的的證書,儘管這是一個更多的工作)。你也可以設想允許匿名用戶不告訴你他們是誰 - 或拒絕他們 - 這取決於你。
一旦你知道這是誰給你打電話,你可以再做授權 - 決定他們能做什麼。在這裏,您通常在公司/局域網場景中使用Active Directory組成員資格,或者在其他場景中使用ASP.NET成員資格/角色系統。或者你可以推出自己的產品 - 這完全取決於你。
希望幫助一下,讓你開始了吧!
Marc