2010-08-02 18 views
2

我們的一位架構師正在爲我們公司的下一代應用構建新的參考架構。原型是一個ASP.NET MVC 2 Web應用程序,位於WCF數據服務(Astoria)之上,並使用EntityFramework 4進行數據訪問和對象映射。WCF數據服務(Astoria)是業務線應用程序的理想選擇嗎?

原型應用程序管理用戶的角色,所以服務可以執行諸如創建/更新/刪除用戶,向用戶添加應用程序訪問權限/功能/角色等等。所以從安全角度來看,沒有人應該能夠擊中在應用程序之外的數據服務並且發生任何這些行爲。

我原本以爲WCF數據服務是爲了在網絡上實現OData實現和「開放」服務,並且該業務應用程序應該仍然使用傳統的WCF服務來實現其適應性,安全性和其他功能。我在這裏基地? WCF數據服務是從MVC控制器調用的好選擇嗎?他們是否可以像傳統的WCF服務那樣輕鬆處理認證和安全性?

回答

1

更新:

新的問題基本上是 「能WCF數據服務限制訪問?」 是的。


這些問題很難回答,因爲您尚未發佈您的需求,SLA或安全需求。 WCF數據服務適合我的LoB,但可能不適合您,具體取決於您未發佈的各種細節。

的兩點思考:

1)WCF數據服務僅僅是休息,別有選擇相同的安全作爲手卷WCF服務。你需要像克里姆林宮一樣鎖定一切嗎? WCF數據服務可能不是你的一杯茶。

2)WCF數據服務適用於只讀,「SELECT TOP 50 * FROM PRODUCT」類型的服務方法。通常情況下,您必須爲應用程序的每種實體類型編寫幾個WCF服務方法。通過在正常的WCF服務之上利用WCF數據服務,您可以節省大量時間,一次又一次地編寫相同的讀取方法。

+0

由於它只是一個演示體系結構的原型,因此沒有任何與此特定應用程序相關的硬性要求。但是,原型管理用戶的角色,因此服務會執行諸如創建/更新/刪除用戶,向用戶添加應用程序訪問權限/功能/角色等等。所以從安全角度來看,沒有人應該能夠訪問數據服務在申請之外並且有任何這些行動發生。 – 2010-08-02 14:53:08

+2

WCF數據服務本身不提供安全解決方案。它依賴於其他圖層來實現這一點(它允許掛鉤使這更容易)。這是一個複雜的主題: - 傳輸級別的安全性 - 依賴於HTTP,因此例如SSL工作得很好。 - 授權 - 您可以在DS之上實現自己的應用程序,並且依賴於HTTP,所以幾乎所有與HTTP協同工作的授權方案都可以正常工作 - 即使正常的WCF服務也不會阻止隨機用戶在您的服務之外應用。你需要保護WCF服務,WCF數據服務 – 2010-08-02 15:14:50

+0

謝謝你們,這是非常棒的見解。 雖然我想確保我沒有將問題限制於安全性,但問題主要在於WCF數據服務爲行業應用程序提供動力是否可接受(或最佳實踐)。看起來答案是「是」。 – 2010-08-02 18:54:27

1

OData是一種訪問數據的協議,不用於保護數據。沒有標準的解決方案來限制對數據的某些部分的訪問,而僅限於特定的角色或帳戶,就像在每個普通的SQL數據庫中一樣。大多數安全措施都基於'一切都是可見的,並且所有操作都是允許的,除非您爲特定情況另外指定',而不是'默認安全'。

當您想要使用OData從業務線應用程序訪問公司數據時,這是一個很大的障礙。如果您打算使用Ajax呼叫,您的OData必須在互聯網上可見,因此容易受到各種攻擊。 OData似乎是互聯網上公共數據的一個很好的協議,但據我所知,目前還沒有OData提供商實現基於角色的權限。

可以使用這種權限擴展標準的WCF數據服務,但這是有價格的。我從經驗中瞭解到,以後無法添加安全性,它必須成爲任何應用程序框架和數據存儲設施的組成部分。您可能希望得到最好的結果,但您總是需要爲最壞的計劃做好準備,並且在有人在互聯網上查找包含個人和公司敏感數據的無擔保OData來源之前不久就會有所準備。

相關問題