客户是否应该使用GET或POST获取OAuth 2访问令牌?

Spi*_*ike 24 authentication https authorization oauth oauth-2.0

OAuth 2.0草案v2-22第3.2节说:

在发出访问令牌请求时,客户端必须使用HTTP"POST"方法.

但是,如果您查看FacebookFoursquare OAuth2实现,他们会要求客户端发出一个简单的GET请求来请求访问令牌.他们要求客户将client_id和client_secret放在URL中.

我正在构建OAuth 2服务器,在看到Facebook和Foursquare的实现后,我强烈考虑打破协议,允许客户端通过GET请求访问令牌.我的网站使用的是SSL,类似于Facebook和Foursquare.

所以我的问题是:我有什么理由不允许客户通过HTTPS通过GET方法请求访问令牌吗?

Sco*_* T. 11

最常见的参数是您不应将敏感信息放在查询字符串(GET参数)中,因为Web服务器通常会记录HTTP请求URL.POST数据可以任意长,因此通常不会记录.因此,当您处理类似client_secret或代码(虽然它是一次性使用)之类的东西时,在POST有效负载中传递它是有意义的.

恕我直言,如果您使用的OAuth 2.0流程不需要client_secret(或者您按照建议将其放在HTTP Authorization标头中) - 我没有看到允许GET的问题.