2013-07-18 29 views
1

我有一個面向公衆的Web服務,它具有基於令牌的安全系統。通過提供用戶名&密碼來完成登錄,並且每當調用服務時返回一個用於前進的唯一令牌。面向公衆的Web服務安全 - 內部請求

我的問題是:有沒有一種安全的方式來區分來自內部網絡外部的呼叫和來自內部的呼叫?我想爲在內部網絡中調用服務的客戶提供更高的權限。具體來說,我們有一個網站與我們的網絡服務在同一網絡上運行,我希望在撥打我們的服務時爲網站提供更高的權限。

當Web服務面向公衆時,有沒有一種安全的方法可以做到這一點?我不希望發生的事情是,來自我們內部網絡之外的某人以某種方式獲得提升特權。

服務是使用Java和CXF框架實現的。

回答

1

絕對有可能,我建議這樣做。

有您的應用程序和外部客戶端之間的位於反向代理。此反向代理將在請求標頭中驗證令牌和所需的特權。

內部客戶端的升降式特權可以通過以下完成接近

  1. 設置在反向代理的請求的身份驗證標頭。如果此標頭設置爲true,則表示該呼叫來自外部客戶端。該應用程序可以根據此標題決定是否需要授權。內部客戶可以調用此服務,而無需通過任何認證/授權。請注意,這將完全消除內部客戶端的任何身份驗證。

  2. 對可以設置包含基於呼叫者的IP提升權限額外標頭中的RP規則。內部客戶IP可以製作成適用的列表。

  3. 對他們兩人與翻領代理兩個端點的內部和外部客戶。內部將在請求標頭中設置提升的特權。

+0

謝謝你,我還以爲某種代理的可能解決方案;讓第二個人驗證它是很好的。我想我可以將你的答案和aet的答案結合起來,並且同時保護代理和IP過濾以及api密鑰。這樣,如果有人意外刪除了代理的保護,那麼它不會完全打開,因爲其他層的保護仍然是活動的。 反正我已經有了一個API密鑰,所以它沒有額外的工作來實現它。只是不想依靠自己的API密鑰... – craigrs84

1

你有選擇,我可以立即想到至少兩種方法。 1)還需要一個API密鑰才能訪問您的Web服務,並且特殊情況下會根據其密鑰提供給網站的訪問權限。 2)根據請求者(網站或內部網絡)的IP地址提升priv。