2012-07-12 60 views
4

因此,我們正在開發一個Web應用程序Symfony2(簡短編輯:Symfony2令人震驚),與SOA的界限一致。所有的數據都在我們的jQuery動力前端和Symfony2後端之間來回放送,格式化爲一個JSON,而這正是我們需要解決的問題。如何保護SOA風格Symfony2應用程序

Symfony2提供了一個強大的安全系統,但它似乎取決於「安全層」攔截表單提交併使用表單編碼的POST數據來處理認證嘗試。這對我們的應用程序是有問題的,因爲我們只使用JSON。從我站在的地方,對每一個請求和響應使用JSON ,除了身份驗證是......布爾的表格,坦率地說。不好的氣味,不好的juju,不管你怎麼稱呼它。

現在,Symfony2允許創建事件監聽器,這些事件監聽器掛鉤到與請求生命週期和消費者響應相關的一系列事件中。我們使用這些鉤子之一來解碼每個POST請求附帶的JSON,以便相關控制器只需要擔心直接使用php數組,而不執行任何解碼或反序列化等操作。

所以我們問題的癥結在於,「安全層」期望從表單提交中獲得的表單提交的POST數據(通常位於後端首先提供的頁面上)。我們設置了一個從JSON化數據創建的PHP數組。那麼,該怎麼做?我們應該:

  • 創建一個自定義身份驗證服務,該服務構建用於處理由le JSON構成的數組?
  • 調整我們的請求鉤子來檢查每個請求的目標URI,然後將請求的JSON按照「安全層」期望的表單編碼字符串進行處理?
  • 調整「安全層」,以便它可以工作的JSON轉php數組?
+0

+1歡迎來到SO。我喜歡看到像這樣的問題,試圖進一步推動一個強大的系統。另外,我喜歡你的'布爾'線。 – 2012-07-12 18:32:47

+0

你在哪裏看到Symfony期望「表單編碼POST」?在sf2中實現了各種認證機制,表單發佈僅僅是其中的一種。 – MDrollette 2012-07-12 19:11:12

+0

@軍械詞!謝謝。 – nothankyou 2012-07-12 20:56:19

回答

1

創建自己的身份驗證提供程序相當簡單。您可以按照此cookbook article稍微修改它來處理您的JSON請求,而不是該示例中使用的WSSE。

+0

我喜歡這個想法越來越多。健康而令人滿意。我們會推出來看看會發生什麼! – nothankyou 2012-07-12 22:02:41

+0

完全合作!謝謝你的提示! – nothankyou 2012-07-16 01:52:18