为什么OAuth 2授予资源所有者密码凭据?

为什么OAuth 2授予资源所有者密码凭据?,oauth,Oauth,为什么有人会将OAuth2与这种授权一起使用?我的意思是,如果客户端已经拥有资源所有者的名称和密码,为什么不使用资源服务器使用的任何身份验证工具作为资源所有者进行身份验证呢 我不明白这里的理由。有人能解释一下吗?正如规范所提到的,资源所有者密码凭据授予用于迁移目的,并且仅适用于(通常)客户端和授权服务器由同一方控制的场景: 资源所有者密码凭据(即用户名和密码) 可直接用作授权授予,以获得访问权限 代币仅当存在高风险时才应使用凭据 资源所有者和客户之间的信任度(例如, 客户端是设备操作系统的一部分

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


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

正如规范所提到的,资源所有者密码凭据授予用于迁移目的,并且仅适用于(通常)客户端和授权服务器由同一方控制的场景:

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

它允许在客户端和资源服务器之间的分支上使用标准令牌和协议(例如OAuth 2.0承载令牌),同时使用“待弃用”的方式在客户端和授权服务器之间获取令牌:

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

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

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

授权服务器和客户端应尽量减少使用此 授予类型,并尽可能使用其他授予类型


我将提供另一个观点


OAuth2.0是通用web应用程序的优秀协议。但是,有些应用程序使用更强大的身份验证/授权机制。对于这些情况,允许使用强方法建立令牌是有意义的。这类应用程序的一个例子是银行API—它可以在web上使用经典的OAuth 2.0流(使用银行的网站),并使用PowerAuth 2.0等协议(我是此解决方案的作者)为本机移动或桌面应用程序提供强大的数据签名。

您能否对此授权进行一些扩展?如果我正在创建一个后端api,我是否至少需要一个具有这种授权类型的应用程序,以允许用户在某处进行身份验证?如果用户从未在任何地方输入用户和密码,那么它应该如何进行身份验证?