【问题标题】:Two Legged OAuth Workflow两条腿的 OAuth 工作流程
【发布时间】:2011-04-09 18:59:53
【问题描述】:

我正在尝试使用两条腿的 oauth 来允许移动客户端登录到我创建的 api,但是我无法完全理解正确的工作流程,并且所有教程似乎都说了一些不同的东西。

根据我在两条腿版本中读到的内容,oauth 消费者密钥和消费者秘密是专门分配给用户的,并且不使用令牌。因此,当用户登录时,他们(或他们的设备)必须出示他们的消费者密钥和秘密,我们可以使用它来验证他们的身份。但是然后呢?客户端设备是否会收到一些他们用来访问 API 的令牌,或者他们是否会在每个请求中发送消费者信息?

而用户只能记住用户名和密码,我们如何从客户端设备上的用户名和密码获取消费者密钥和秘密以发送到服务器?

【问题讨论】:

    标签: oauth


    【解决方案1】:

    您不应该为每个客户端设备都有一个消费者密钥/秘密对。 “消费者”的 OAuth 概念是使用 API 向您进行身份验证的特定站点或开发人员。谁在创建用户名/密码对?这些是您的用户帐户,还是您正在寻找能够使用 Yahoo、Google 等帐户登录您的用户?

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

    【讨论】:

    • 是的,我们希望用户专门为我们的服务创建用户名/密码,我们不会尝试与 Google、Yahoo 等集成。是的,我们希望使用用户名和密码但不确定他们在 oauth 中扮演什么角色。我见过的示例 oauth 验证实现都没有使用密码。
    • 听起来好像您需要用户名和密码,而不是 OAuth。您希望从 OAuth 中获得什么?有关您的架构的更多信息可能会有所帮助。
    • 我还不太熟悉两腿式 OAuth,但通常使用 OAuth 的主要优点之一是您不必存储用户的实际用户名和密码,而是存储某种 OAuth 凭据(例如密钥/秘密)。如果用户的移动设备被盗,他们可以使用用户名/密码登录您的网站并取消授权存储在设备上的 OAuth 凭据,因此小偷现在无法使用该设备登录。 OAuth 凭据还可以携带有限的权限,因此即使它们被泄露,也没有人能够更改您的密码等。
    【解决方案2】:

    2-legged OAuth 删除了一个单独的 authN/authZ 服务器,该服务器直接与 3-legged OAuth 中存在的客户端对话。它当然确实涉及(访问)令牌。客户端设备将收到一个令牌并可以使用它直到它过期。

    此设置的优点是您无需担心每次 API 调用中 client_id/secret 的安全性。每次调用都发送 client_id/secret 是基本认证,不推荐。相反,通过使用 OAuth,您只需要担心用于获取令牌的 API 调用中 client_id/secret 的安全性(例如,每个令牌的生命周期一次)。如果一个令牌被泄露,它有一个 TTL,而 client_id/secret 没有。

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

    【讨论】:

      猜你喜欢
      • 2010-12-11
      • 2011-02-16
      • 1970-01-01
      • 2012-09-01
      • 2023-03-26
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多