我正在为 Web App/PhoneGap 应用程序奠定基础,该应用程序将使用 RESTful Web 服务来共享信息和记住状态,但我正在努力解决身份验证问题。
基本上,我想要两个部分,一个是 Web 应用程序,另一个是在 PhoneGap 中开发的胖客户端应用程序,所有客户端 HTML 和 JS 片段都位于应用程序本地,而不是远程服务。Web 应用程序和 PhoneGap 应用程序都将使用一些 RESTful WS 来处理存储和状态,并作为 Web 应用程序的一部分托管(相同的基本服务器代码)。我的意图是使用 Spring Roo 来编写 Web 应用程序和 REST 部分,因此 Spring Security 很可能会在那里使用。在这两种情况下,我都希望通过 Google/Facebook/Twitter 通过 OAuth2 处理身份验证。这就是我缺乏理解的地方。
我对 OAuth 的理解是,您必须将用户转发到第 3 方(Google/Facebook/Twitter),在那里对他们进行身份验证并返回访问令牌。事实上,在使用传统的 Web 应用程序模型之前,我已经这样做了。然后,此访问令牌用于针对该服务执行操作。从传统的 Web 应用程序的角度来看,这对我来说很有意义,当用户单击“使用 Google 登录”按钮时,我会简单地将用户推到 Google,但我似乎无法理解如何在用 PhoneGap 编写的客户端应用程序,以及我发现的所有示例看起来都希望远程托管 PhoneGap 应用程序,而我真的不想这样做。此外,我对一些 API 密钥要求感到困惑,这些要求似乎也基于 URL 来转发请求。
我正在努力解决的最后一个问题是 REST 调用。在进行 REST 调用时,我需要知道用户是谁,但如果用户对 PhoneGap 应用程序完全本地进行身份验证,并且身份验证由第 3 方完成,我将如何识别用户?他们是否将访问令牌传递给我,而我会对此做些什么?
诚然,这种困惑大部分是由于我完全不了解 OAuth 及其运作方式。