我正在访问通过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方法获取客户端凭证授予的访问令牌是否正确?
答案 0 :(得分:1)
感觉实现不正确-OAuth规范从不推荐这样做,因为:
POST请求当然没有上述问题。
答案 1 :(得分:1)
将客户端ID和/或客户端机密作为查询字符串传递是OAuth 2.0框架的错误实现。无论API使用GET
还是POST
方法。我最近看到了另一个使用POST
方法的API(Datanas),但要求在查询字符串中传递客户端ID和客户端密钥。 The issue was reported here。
RFC 6749定义了使用OAuth2时如何检索访问令牌。以简化的方式:
POST
方法
请求。您能做的最好的就是与API的支持取得联系,并要求他们与您的工程团队联系。