【问题标题】:Why does OAuth 2 have Resource Owner Password Credentials Grant?为什么 OAuth 2 有资源所有者密码凭证授予?
【发布时间】:2016-03-03 15:26:03
【问题描述】:

为什么有人会在这种授权下使用 OAuth 2?我的意思是,如果客户端已经拥有资源所有者的名称和密码,为什么不直接使用资源服务器使用的任何身份验证工具作为资源所有者进行身份验证?

我不明白这里的理由。谁能解释一下?

【问题讨论】:

    标签: oauth


    【解决方案1】:

    我将提供另一种观点。

    OAuth 2.0 是适用于常见 Web 应用程序的出色协议。然而,一些应用程序使用更强大的身份验证/授权机制。对于这些情况,允许使用强方法建立令牌是有意义的。此类应用程序的一个示例可以是银行 API - 它可以使用 Web 上的经典 OAuth 2.0 流(使用银行的网站)和使用诸如 PowerAuth 2.0(我是此解决方案的作者)之类的协议用于本地移动或桌面应用程序的强数据签名。

    【讨论】:

      【解决方案2】:

      正如规范所述,资源所有者密码凭据授予用于迁移目的,仅适用于(通常)客户端和授权服务器由同一方控制的场景,https://www.rfc-editor.org/rfc/rfc6749#section-1.3.3

      资源所有者密码凭据(即用户名和密码) 可以直接用作授权授予来获取访问权限
      令牌。仅当存在高
      资源所有者和客户之间的信任程度(例如,
      客户端是设备操作系统的一部分或具有高度特权的
      应用程序),并且当其他授权授予类型不是时
      可用(例如授权码)。

      它允许在客户端和资源服务器之间使用标准令牌和协议(例如 OAuth 2.0 承载令牌),同时使用“待弃用”的方式在客户端和授权服务器之间获取令牌。 https://www.rfc-editor.org/rfc/rfc6749#section-10.7:

      资源所有者密码凭据授予类型通常用于
      遗留或迁移原因。它降低了存储的总体风险
      客户的用户名和密码,但并不消除需要 向客户端公开高权限凭据。

      这种资助类型的风险高于其他资助类型 因为它维护了这个协议寻求的密码反模式 避免。客户端可能会滥用密码,或者密码 可能无意中泄露给攻击者(例如,通过日志 客户保存的文件或其他记录)。

      另外,因为资源所有者无法控制 授权过程(资源所有者的参与在 它将其凭据交给客户端),客户端可以获得
      访问令牌的范围比资源所需的范围更广
      所有者。授权服务器应考虑范围和
      通过此授权类型颁发的访问令牌的生命周期。

      授权服务器和客户端应该尽量减少使用这个 授权类型并尽可能使用其他授权类型。

      【讨论】:

      • 您能详细介绍一下这笔赠款吗?如果我正在创建一个后端 api,我是否不需要至少一个具有此类授权的应用程序来允许用户在某处进行身份验证?如果用户从未在任何地方输入用户名和密码,它应该如何进行身份验证?
      猜你喜欢
      • 2016-12-31
      • 1970-01-01
      • 2021-06-20
      • 2014-09-02
      • 2018-05-25
      • 2019-12-08
      • 2015-05-30
      • 1970-01-01
      • 2019-02-19
      相关资源
      最近更新 更多