休息申请和授权

时间:2012-05-25 12:57:04

标签: rest oauth authorization

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

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

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

我没有任何第三方应用程序,公司,网站等......这将对我的用户进行身份验证。

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

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

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

我不认为HTTP(s)自动化,因为我不想将evrytime用户和密码发送到服务器。

3 个答案:

答案 0 :(得分:0)

没有。

如果OAuth存在的主要原因之一是允许集成而不会影响用户的用户名和密码。

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

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

答案 1 :(得分:0)

我想你可能会在security site上找到更好的答案。例如,请参阅this question

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

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

答案 2 :(得分:0)

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

启用特定教育机构的申请,以便批准申请在这些地区使用。

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