2015-12-02 24 views
0

enter image description here架構挑戰對共享網絡服務

我目前的系統架構的web應用程序看起來像上面。本質上,它只是一個代碼庫,它被部署在不同的上下文中,比如app1.localhost.com,app2.localhost.com。

這是我目前的挑戰 -

  • 我需要使用從用戶的瀏覽器的Ajax調用查詢我的web服務。但是,不知何故,我需要告訴web服務,該請求來自user1的app1或user2或app2。因此,web服務可以查詢數據庫中正確的模式並返回結果。
  • 我的webservices需要是無狀態的。
  • 我不能讓用戶篡改來自瀏覽器的請求。

這是一個有缺陷的模型?我的期望是否符合標準的做法?什麼是實現這種架構的最佳方式?

+0

您可能想看看programmers.stackexchange.com上的規則,因爲我認爲這可能是一個更好的地方來移動您的問題,因爲它可能是SO的主題。 – Marged

+1

@收集這個問題需要多一點工作才能成爲可接受的[程序員設計審查問題](http://meta.programmers.stackexchange.com/q/6502)。具體來說,它可能有點過於寬泛。 – 2015-12-02 22:58:06

+0

@Snowman我相信周杰倫能夠適應 – Marged

回答

1

讓我們一步一步來完成。

所以你的web服務需要知道應用程序和用戶。

簡單:只需將它作爲參數或作爲url的一部分包含在請求中即可。

對於用戶可能提供的一些信息也是如此。

挑戰來自要求用戶不能改變請求。

這通常是通過加密簽署請求(或敏感部分)來實現的。我認爲重播攻擊也是一個問題。

爲應用程序創建證書。

在應用程序服務器上創建一個nonce

使用證書籤署臨時數,應用程序名稱和用戶名。

在用於ajax調用的請求中包含nonce,servername,username和signature。該隨機數並沒有之前所使用

檢查隨機數,服務器名稱,用戶名和簽名匹配的web服務

檢查也。

檢查隨機數確實需要一些狀態,但只需要一個隨機數列表。如果你使得隨機數增加,你甚至可以丟棄比你收到的最後一個小得多的隨機數,進一步限制狀態量。

你應該檢查這樣的事情是否作爲現成的協議存在,因爲創建自己的安全相關協議總是一個壞主意。