1

我想构建自己的 REST 应用程序。

我打算使用 oAuth 作为主要的身份验证方法。

问题是:我可以使用登录名和密码作为 client_id 和 client_secret(根据 oAuth 规范)吗?

我没有任何第三方应用程序、公司、网站等...可以验证我的用户。

我有自己的 REST 服务器和 JS 应用程序。

整个站点将以通常(RPC)的方式制作,但一些私有部分将作为 RESTfull 服务完成,并具有足够的独立 JS 应用程序。

更新:我不确定我什至需要完整的 oAuth 支持。在我看来,我可以在 https 页面上询问登录名和密码,然后生成一些令牌。后来我可以用它来检查这个用户是否已经通过身份验证。但在这种情况下,这个 oAuth 变得几乎与我们在 Web 应用程序中的相同。我不需要 oAuth 来授权用户吗?

我不考虑 HTTP(s) 授权,因为我不想将 evrytime 用户和密码发送到服务器。

4

3 回答 3

0

我认为您可能会在安全站点上得到更好的答案。例如,参见这个问题

在任何情况下,您都需要从详细评估您试图阻止哪些攻击以及哪些攻击是“可接受的”开始。例如,如果您使用 HTTPS,那么您可能会接受中间人攻击的剩余危险,因为它需要伪造 SSL 证书。一般来说,很难说重放攻击是否可以接受。

一种合理的解决方案是通过让用户使用用户名和密码通过 HTTPS 进行身份验证,生成具有到期日期的安全令牌,然后将该令牌和到期日期发送回客户端,从而创建一个有时间限制的临时令牌。例如,您可以通过获取秘密的 SHA1 哈希值加上用户名加上过期时间戳来创建(合理的)安全令牌。然后客户端可以在未来的请求中包含令牌、用户名和身份验证时间戳,您可以使用您的密码和时钟对其进行验证。这些不需要作为 3 个参数发送;它们可以连接成一个字符串user|timestamp|token

于 2012-06-01T22:02:27.720 回答
0

向 SLI 注册您的应用程序。SLI 授予唯一的客户端 ID 和客户端密码,使您的应用程序能够向 SLI API 进行身份验证。您还必须注册应用程序的重定向 URI 以用于身份验证和授权流程。

向特定教育组织启用您的应用程序,以便可以批准该应用程序在这些地区使用。

在您的应用程序中配置和实施适当的 OAuth 2.0 身份验证和授权流程,包括管理会话和授权超时。

于 2012-06-04T05:19:57.460 回答
0

不。

如果 OAuth 存在的主要原因之一是允许集成,而用户不会泄露他们的用户名和密码。

如果您打算使用用户名和密码,如果您仍想签署您的请求,请查看 xAuth 作为选项。更多信息:https ://dev.twitter.com/docs/oauth/xauth 。

但是您也可以选择 HTTP 基本身份验证。至少如果您通过 SSL 发布 API。更多信息:http ://en.wikipedia.org/w/index.php?title=Basic_access_authentication

于 2012-05-25T14:13:04.407 回答