2

如何將OpenID與REST風格的Web服務結合使用?使用OpenID(RPX)(也許OAuth)實現REST風格的Web服務

我正在做的個人項目是使用RPX SaaS來做OpenID。這個關鍵的結果是描述登錄用戶的URL。該應用程序本身就是Javascript,我計劃使用REST API與後端進行數據庫持久性和空間處理通信。

這個應用程序的安全要求並不大。我想知道哪個用戶正在提出請求。我不相信我需要使用SSL對數據進行保密,並且我不希望運行SSL的開銷。

我正在使用Spring並希望儘可能使用Spring Security(Acegi),但是我並不喜歡這個想法。

選項:

  1. 返回的OpenID的URL給Javascript應用程序,使用該按ID檢索資源列表中的用戶,然後檢索/保存在/ etc這些資源。

  2. 創建一個將OpenID URL與隨機會話令牌相連接的會話表。將令牌返回給JavaScript應用程序,該應用程序必須隨後每次請求返回令牌。

  3. 將選項2​​中的會話用作OAuth的消費者令牌等。最初,會話將使用PKI加密發送到應用程序。

  4. 依靠J2EE HTTP Session。

這些選項我傾向於選擇2.劫持的會議將是困難的,因爲攻擊者必須猜測會話ID和我不相信應用程序需要保護的嗅探。選項3與選項2基本相同,但會話ID不適用於嗅探。選項4將OpenID URL放入服務器的內存中,並導致REST旨在避免的所有可伸縮性問題。

我很感激任何關於此的討論。

回答

0

所以,2年3個月後,我可以回答我自己的問題。我爲我的個人項目實施了這個項目,並且我已經爲我的僱主單獨實施了這個項

插入Spring Security是最好的選擇。您可以選擇使用預先認證的流程,但是您可能會發現CasAuthenticationFilter(和CasAuthenticationEntryPoint)可以更好地工作,因爲它們具有您需要的大部分流程。