javascript - 将 OpenID (RPX)(可能还有 OAuth)用于 RESTful Web 服务

标签 javascript rest openid spring-security restful-authentication

您将如何将 OpenID 与 RESTful 网络服务相结合?

我正在从事的个人项目是使用 RPX SaaS 来做 OpenID。这样做的关键结果是描述登录用户的 URL。该应用程序本身大量使用 Javascript,我计划使用 REST api 与后端进行通信以实现数据库持久性和空间处理。

此应用程序的安全要求并不高。我想知道哪个用户正在发出请求。我不认为我需要使用 SSL 来对数据保密,我不希望运行 SSL 的开销。

我正在使用 Spring,如果可能的话我想使用 Spring Security (Acegi),但我并不拘泥于这个想法。

选项:

  1. 将 OpenID URL 返回到 Javascript 应用程序,使用它来检索用户的资源列表,然后通过 ID 检索/保存/等等这些资源。

  2. 创建一个 session 表,将 OpenID URL 与随机 session token 连接起来。将 token 返回给 Javascript 应用程序,然后该应用程序必须在每个后续请求中返回 token 。

  3. 使用选项 2 中的 session 作为 OAuth 的消费者 token 等。最初, session 将使用 PKI 加密发送到应用。

  4. 依赖 J2EE HTTP Session。

在这些选项中,我倾向于选项 2。劫持 session 会很困难,因为攻击者必须猜测 session ID,而且我认为应用程序不需要防止嗅探。选项 3 与选项 2 基本相同,但 session ID 不可用于嗅探。选项 4 将 OpenID URL 放入服务器的内存中,并导致 REST 旨在避免的所有可伸缩性问题。

我很感谢对此的任何讨论。

最佳答案

所以,2 年 3 个月后我可以回答我自己的问题。我为我的个人项目实现了这个,我已经为我的雇主单独实现了它。

插入 Spring Security 是最好的方法。您可以选择使用预验证流程,但您可能会发现 CasAuthenticationFilter(和 CasAuthenticationEntryPoint)工作得更好,因为它们拥有您需要的大部分流程。

关于javascript - 将 OpenID (RPX)(可能还有 OAuth)用于 RESTful Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781071/

相关文章:

javascript - 将分页控件添加到整页触摸滑动器/ slider - Hammer.js

java - TALEND:如何存储 tRest 组件中所需的刷新 token ?

java - 在 Spring Boot 2.2.0 应用程序中点击 REST 端点时出现问题

openid - 两个不同的 Google OpenID URL

javascript 淡入淡出动画

javascript - jsp表达式和java脚本一起

rest - 通过 REST API [MapR 6.1/Hadoop-2.7] 从 Yarn 查询节点标签拓扑

asp.net-mvc-3 - 谷歌 OpenId : Accept only users of a particular company

c# - 使用 Azure AD B2C 登录 Xamarin Android 应用

javascript - Window.open 作为模态弹出窗口?