2011-11-25 131 views
23

所述的OAuth 2.0草案v2-22 3.2节说:在进行访问令牌 请求时客户应该使用GET还是POST获得OAuth 2访问令牌?

客户端必须使用HTTP “POST” 方法。

但是,如果你看看FacebookFoursquare的OAuth2实现,他们要求客户做一个简单的GET请求,请求访问令牌。他们要求客户将client_id和client_secret放入URL中。

我建立一个OAuth 2服务器,并在看到Facebook的和Foursquare的实现,我强烈地考虑也打破了协议,允许客户端通过GET请求访问令牌。我的网站正在使用SSL,与Facebook和Foursquare类似。

所以我的问题是这样的:有没有什么好的理由为什么我不应该允许客户端通过HTTPS通过GET方法请求访问令牌?

回答

9

最常见的说法是,您不应将敏感信息放入查询字符串(GET参数)中,因为Web服务器通常会记录HTTP请求URL。 POST数据可以是任意长的,所以通常不会被记录。因此,当你处理诸如client_secret或代码(尽管是一次性使用)之类的东西时,在POST有效载荷中传递它是有意义的。恕我直言,如果你使用的OAuth 2.0流程不需要client_secret(或者你把它放在HTTP授权标题中,建议) - 我没有看到允许GET的问题。

+0

有关服务器日志好一点,但对于的oauth2,我们明文CLIENT_ID和client_key存储在我们的服务器上,无论如何,所以如果这些信息是在我们的服务器日志,这真的是差很多比它已经在我们的数据库中现有的? – Spike

+0

同意 - 当时大约一样。如果Web服务器和您的OAuth AS都在您的控制之下 - 没有什么大不了的,允许GET恕我直言。 –

相关问题