为什么 OAuth2 支持 grant_type=密码.



我已经看到几个使用OAuth 2.0进行身份验证的API使用密码grant_type。我觉得这有点令人困惑,因为:

典型的 OAuth 2 模型的一个巨大优势是,应用程序永远不需要处理所连接的服务的用户的用户名/密码。授予类型密码失去了这一优势,因此我不确定为什么您使用它而不是基本身份验证,特别是因为基本凭据至少在以纯文本形式使用授权类型密码发送凭据时对其进行编码。

我错过了什么使这种OAuth成为有效用途?

正式

名称是资源所有者密码凭据授予;它仅作为迁移机制,而不是主要的OAuth 2.0流,因为OAuth确实旨在缓解在客户端应用程序中输入用户凭据的问题;请参阅 https://www.rfc-editor.org/rfc/rfc6749#section-10.7

它允许资源服务器通过接受和验证访问令牌迁移到 OAuth 2.0,客户端稍后可以升级到允许更好安全性的授权

密码grant_type有一个有效且重要的用例,而不仅仅是遗留系统:grant_type=password是实现官方第一方应用程序的好方法。这样,您就可以对第一方和第三方应用程序使用相同的 oauth2 授权服务器。

这是 API 优先设计的一个示例,其中你自己的应用是针对你公开供第三方应用使用的相同 API 构建的。

最新更新