Rest应用和授权

Rest应用和授权,rest,oauth,authorization,Rest,Oauth,Authorization,我想建立我自己的REST应用程序 我计划使用oAuth作为主要的身份验证方法 问题是:我可以使用登录名和密码作为客户机id和客户机机密(在oAuth规范中) 我没有任何第三方应用程序、公司、网站等。。。这将授权我的用户 我有自己的REST服务器和JS应用程序 整个站点将采用常规(RPC)方法,但一些私有部分将作为RESTfull服务完成,并有足够的独立JS应用程序 更新:我甚至不确定我是否需要完全的oAuth支持。在我看来,我可以在https页面上询问登录名和密码,然后生成一些令牌。稍后我可以用

我想建立我自己的REST应用程序

我计划使用oAuth作为主要的身份验证方法

问题是:我可以使用登录名和密码作为客户机id和客户机机密(在oAuth规范中)

我没有任何第三方应用程序、公司、网站等。。。这将授权我的用户

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

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

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

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

NO./P> OAuth存在的一个主要原因是允许集成,而不让用户泄露他们的用户名和密码

如果您计划使用用户名和密码,那么如果您仍然希望对请求进行签名,可以将xAuth作为一个选项。更多信息:


但您也可以选择HTTP基本身份验证。至少如果您通过SSL发布API。更多信息:

我想你可能会在网上得到更好的答案。例如,请参见

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


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

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

在特定的教育机构启用您的应用程序,以便该应用程序可以被批准在这些地区使用


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

您是指oauth_consumer_密钥和oauth_consumer_密钥吗?我想是的,正是这些密钥通常用于授权第三方软件与RESTfull服务器交互。但就我而言,我没有这样的想法。我只有JS(独立)应用程序(我会说JS Ajax应用程序没有任何其他页面,所有内容都将由Ajax加载)。我不想每次都发送凭据,使用oAuth,我只能使用令牌,但在我的情况下,它看起来像会话ID,在这种情况下,您可以使用cookie身份验证。假设您的js客户端和服务器代码位于同一个域上。但这只是你们描述的正常的内部web开发…谢谢,我会检查你们提供的链接,你们能告诉我在access\u token案例中,当它过期但用户仍在系统中工作时,我该怎么做吗?我应该在透明模式下重新生成吗?@user,如果您想生成新令牌或要求用户重新验证,则由您决定。第一种更方便,第二种更安全。