为什么我们需要在 oauth 协议中从客户端应用程序传递 grant_type?

Why do we need to pass grant_type from client application in oauth protocol?

为什么我们在使用 oauth 协议时需要从客户端应用程序传递授权类型?

  1. 有时候,当我使用错误的授权类型时,它说不正确的授权类型,所以如果我只能传递支持的值,那么传递这个值是多余的。服务器可以简单地选择支持的一个。客户端应用程序不必传递它。

  2. 如果有不止一种授权类型可供客户端申请通过,那么客户端不能只通过限制最少的授权类型吗?。客户为什么要关心什么是最合适的赠款类型。客户是否必须遵守某些标准或法律问题?

授权类型是 Oauth2 规范的一部分 rfc6749 它旨在用于告知授权服务器您打算使用哪种授权类型。每种授权类型都适用于不同的用例。

  • Web 服务器、基于浏览器和移动应用程序的应用程序 运行 的授权码
  • 使用用户名和密码登录的密码(仅适用于第一方应用)
  • 在没有用户存在的情况下访问应用程序的客户端凭据
  • 以前建议为没有密码的客户端使用隐式,但已被 PKCE 使用授权码授予所取代。

要求授权猜测你想使用哪种类型的授权在我看来是一个很大的安全风险。对于有问题的开发人员来说,最好直接告诉授权服务器他们正在尝试使用哪种授权类型。这样授权服务器就可以验证您所做的是否正确。