2011-08-25 91 views
0

我在JAX-RS(Jersey)中實現了2個RESTful服務:「A」和「B」。它們部署在單獨的應用程序服務器上。 「A」和「B」都是我的。RESTful交叉認證

  1. 客戶端連接並在「A」服務登錄;
  2. 客戶端詢問「A」的資源,例如:https://blabla1/services/myresources;
  3. 對於檢索資源「myresources」服務「A」應該請求(不重定向)服務「B」作爲另一個資源,例如:https://blabla2/services/anotherresources

服務「B」也需要驗證,這就是問題所在。服務「A」是否可能使用客戶端認證參數詢問「B」,以及它將如何工作?

我想這可能與oauth庫,但我找不到任何示例(接近我的問題)以及如何。

感謝

+0

如果你擁有服務「A」和服務「B」,那麼你是否可以擁有一個私人RESTful服務,允許「A」在不需要認證的情況下調用「B」? 由於「A」進行了身份驗證,因此從用戶安全角度來看應該沒問題。你可以確保私人服務,以確保沒有其他人可以稱之爲私人服務。 –

+0

我如何確保私人服務的安全以確保沒有其他人可以撥打它? –

+0

只有「A」和「B」服務才知道的數字證書是我通常使用的。 你有一個內部網絡,「A」和「B」都可以訪問,但不對外界開放嗎?如果是這樣,您可以阻止來自任何外部網絡的服務。 –

回答

1

只是總結在評論中列出的解決方案:

服務「B」(或在它前面的代理)應只接受服務器「A」的證書的HTTPS請求。 (服務器「A」也可以驗證服務器「B」的證書,以避免中間人攻擊。)

然後用戶名可以是純文本請求參數。

如果您的網絡人員比服務器人員要好或發現SSL令人生畏,請讓網絡人員在您的站點之間建立安全通道(形成VPN),並使通道以外的原始Internet無法使用服務「B」 。

+0

同時考慮在雙方添加防火牆規則以保護頻道_除了SSL。讓外界知道有一扇門讓他們去嘗試是沒有意義的。 –