OAuth2授权类型的客户端凭据-是否允许使用GET方法

时间:2020-07-14 06:07:51

标签: oauth oauth-2.0

我正在访问通过GET方法提供访问令牌的服务,该方法接受client_id和client_secret作为查询字符串参数。该服务声称是OAuth2投诉。我查看了OAuth2客户端证书授予规范。规格说明如下:

客户端通过添加
向令牌端点发出请求 以下参数使用“ application / x-www-form-urlencoded”
附录B中的格式,在HTTP中使用UTF-8字符编码
请求实体-正文:

grant_type 需要。值必须设置为“ client_credentials”。

范围 可选的。访问请求的范围,如 3.3节。

客户端必须向授权服务器进行身份验证,如下所示:
在3.2.1节中进行了描述。

即使没有明确排除GET方法,该规范也只允许POST授予访问令牌。说OAuth2规范不允许使用GET方法获取客户端凭证授予的访问令牌是否正确?

2 个答案:

答案 0 :(得分:1)

感觉实现不正确-OAuth规范从不推荐这样做,因为:

  • 凭据通常会记录在Web服务器日志中,这很糟糕
  • GET请求可能会缓存在HTTP管道的各个位置,导致返回旧令牌

POST请求当然没有上述问题。

答案 1 :(得分:1)

将客户端ID和/或客户端机密作为查询字符串传递是OAuth 2.0框架的错误实现。无论API使用GET还是POST方法。我最近看到了另一个使用POST方法的API(Datanas),但要求在查询字符串中传递客户端ID和客户端密钥。 The issue was reported here

RFC 6749定义了使用OAuth2时如何检索访问令牌。以简化的方式:

  • 客户端ID +客户端机密应在授权标头中传递(使用基本身份验证)
  • 并且应该在体内传递代码。
  • 客户端在制作访问令牌时必须使用HTTP POST方法 请求。

您能做的最好的就是与API的支持取得联系,并要求他们与您的工程团队联系。

相关问题