2011-04-09 58 views
2

我正在尝试使用两脚oauth来允许移动客户端登录到我创建的api,但是我无法完全理解适当的工作流程以及所有的教程似乎都说有些不同。双腿OAuth工作流

从我在双腿版本中读到的oauth消费者密钥和消费者密钥专门分配给用户,并且不使用这些令牌。因此,当用户登录时,他们(或他们的设备)必须呈现他们的消费者密钥和秘密,并且我们可以使用它来验证他们的身份。但那又如何?客户端设备是否收到他们用来访问API的令牌,或者他们是否在每次请求时都发送消费者信息?

而用户只能被期望记住一个用户名和密码,我们如何从客户端设备上的用户名和密码到用户密钥和秘密发送到服务器?

回答

0

对于每个客户端设备,您不应该拥有使用者密钥/密钥对。 “消费者”的OAuth概念是使用API​​向您进行身份验证的特定站点或开发人员。谁在创建用户名/密码对?这些特别是您的用户帐户,还是您希望用户能够通过雅虎,Google等帐户登录您?

无论如何,我希望用户有一个用户名和密码,而不是消费者密钥和消费者密钥。

+0

是的,我们希望让用户专门为我们的服务创建用户名/密码,我们并不想与Google,Yahoo等进行整合。是的,我们想使用用户名和密码,但不确定他们在oauth中扮演什么角色。我见过的示例oauth验证实现都没有用密码做任何事情。 – Michael 2011-04-10 00:44:06

+0

听起来好像你想要用户名和密码,然后,而不是OAuth。您希望从OAuth获得什么?有关您的架构的更多信息可能会有帮 – justarobert 2011-04-10 03:09:04

+0

我对于双腿OAuth还不是很熟悉,但一般来说使用OAuth的一个主要优点是您永远不必存储用户的实际用户名和密码,而是存储某种OAuth凭据(例如键/密钥)。如果用户的移动设备被盗,他们可以使用用户名/密码登录您的网站,并取消对设备上存储的OAuth凭据的授权,所以现在小偷无法使用该设备登录。 OAuth凭证也可以带有有限的权限,所以即使它们被入侵,也没有人能够更改密码。 – heavi5ide 2011-05-05 07:05:34

0

双腿OAuth会删除单独的authN/authZ服务器,该服务器会直接与客户端交谈,该客户端以其他方式存在于三方OAuth中。它肯定涉及(访问)令牌。客户端设备将收到一个令牌并可以使用该令牌,直到过期。

此设置的优点是您不必担心每个API调用的client_id/secret的安全性。在每次呼叫中发送client_id/secret都是基本身份验证,不推荐使用。相反,通过使用OAuth,您只需要担心用于获取令牌的API调用的client_id/secret的安全性(例如,每个令牌的生命周期一次)。如果令牌受到损害,则它具有TTL,而client_id/secret不具有。

提供自己的用户凭证的最终用户不知道client_id/secret。预计客户端应用程序将处理令牌的client_id/secret的协商。