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

时间:2011-11-25 22:35:45

标签: authentication https oauth authorization 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方法请求访问令牌吗?

1 个答案:

答案 0 :(得分:10)

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

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