为什么有人会在这种拨款中使用OAuth 2?我的意思是,如果客户端已经拥有资源所有者的名称和密码,为什么不使用资源服务器使用的任何身份验证工具作为资源所有者进行身份验证?
我不明白这里的理由。有人可以解释一下吗?
答案 0 :(得分:7)
如规范所述,资源所有者密码凭据授权仅用于迁移目的,仅适用于客户端和授权服务器由同一方控制的方案({3}}:
资源所有者密码凭据(即用户名和密码) 可以直接用作授权授权来获取访问权限 令牌。凭证只应在有较高的时候使用 资源所有者和客户之间的信任程度(例如, 客户端是设备操作系统的一部分或具有很高的特权 申请),以及其他授权许可类型不是 可用(例如授权码)。
它允许在客户端和资源服务器之间的支路上使用标准令牌和协议(例如OAuth 2.0承载令牌),同时使用“待弃用”方式在客户端和授权服务器之间获取令牌。 https://tools.ietf.org/html/rfc6749#section-1.3.3:
资源所有者密码凭据授予类型通常用于
遗产或迁移原因。它降低了存储的整体风险 客户端的用户名和密码,但不消除需要 将高权限凭据公开给客户端。此授权类型的风险高于其他授权类型 因为它维护了该协议所寻求的密码反模式 避免。客户端可能会滥用密码或密码 可能会无意中向攻击者透露(例如,通过日志 客户保存的文件或其他记录。
此外,因为资源所有者无法控制 授权过程(资源所有者的参与何时结束 它将其凭证交给客户),客户可以获得 获取范围比资源所需范围更广的令牌 所有者。授权服务器应考虑范围和
通过此授权类型发出的访问令牌的生命周期。授权服务器和客户端应该尽量减少对此的使用 授予类型并尽可能使用其他授权类型。
答案 1 :(得分:0)
我将提供另一种观点。
OAuth 2.0是一种用于常见Web应用程序的出色协议。但是,某些应用程序使用更强大的身份验证/授权机制。对于这些情况,允许使用强方法进行令牌建立是有意义的。此类应用程序的一个示例可以是银行API - 它可以使用Web上的经典OAuth 2.0流程(使用银行的网站)和使用PowerAuth 2.0(我是此解决方案的作者)等协议的强大数据签名,用于本机移动或桌面应用程序。