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)可以更好地工作,因为它们具有您需要的大部分流程。