【发布时间】:2014-03-08 23:43:59
【问题描述】:
这是我当前的实验性应用设置:
1. 客户端 - Phonegap 应用程序。我们称它为“本机”,因为没有从 Web 服务器请求 html/js。仅 AJAX JSONP rpc 请求。
2. 资源服务器 - 带有自定义内容类型的 Drupal 7,用于交付的服务模块。 基本身份验证用于对 AJAX 请求进行身份验证。
使用“经典”注册/身份验证没有问题,用户输入登录名和密码,然后在 AJAX 请求中使用它来访问内容。
但现在我想实施 OAuth 作为繁琐的手动注册的替代方案,并具有额外的功能。
经过一些研究,我对它应该如何工作提出了部分想法:
- 用户启动客户端应用。
- Client 打开带有 URL 的 WebView 以进行 Auth。服务器(比如 Facebook)登录对话框,参数 redirect-uri 设置为 Resource Server。
- 用户输入 FB 登录名/密码。用户确认访问姓名、电子邮件等。成功。
- 授权。服务器重定向到redirect-uri中定义的资源服务器,生成的代码作为参数。
- 资源服务器向Auth发送服务器端请求,提供生成的code、client-id、secret。服务器的 API。
- 授权。服务器返回access-token,过期时间。
- 如我所想:资源服务器使用从 Auth 收到的信息(电子邮件、姓名、出生日期等)创建新帐户。服务器,如果尚未创建帐户,或者验证此用户是否已注册,应允许登录(使用电子邮件,从 Auth.Server 接收,数据库查找,对吗?) .
- 然后……现在呢?
我相信 Resource Server 现在可以将 WebView 重定向到具有特殊 URI 参数的某种虚拟地址,以便通知 Client 身份验证成功,并且 AJAX 调用现在应该被允许。
但是 Client - Resource Server 身份验证应该是什么样子的呢? 客户端没有“经典”模式中的登录名/密码对...应该将访问令牌用作某种更改(每次刷新后...对吗?)密码?
编辑:简而言之:Basic/Digest 身份验证在这里没有用处,所以我可以通过什么技术使用第三方 OAuth 身份验证过程来验证移动应用程序 AJAX 对我的 Web 服务器的请求。
【问题讨论】:
-
一旦你有了访问令牌,你对服务器的所有调用都将使用 accessToken。你不需要那里的密码。请记住保存刷新令牌,因为访问令牌将过期,您需要使用它来获取新令牌。
-
@DaImTo 我相信你在谈论 Auth。服务器,例如 Facebook?是的,我应该使用访问令牌,但我的问题是关于 my web(此处为 Resource Server)服务器应如何允许 Client 进入(移动应用程序)在 OAuth 身份验证过程之后。如果没有登录名/密码,这里 AJAX 调用的基本/摘要式身份验证将毫无用处。
标签: ajax facebook authentication mobile oauth