OAuth 2.0重定向网址是否支持查询字符串参数?

时间:2012-05-03 18:03:03

标签: oauth-2.0

我想确保我已正确理解(草案)规范,其中规定:

  

重定向端点URI必须是由
定义的绝对URI   [RFC3986]第4.3节。端点URI可以包括
  “application / x-www-form-urlencoded”格式化   ([W3C.REC-html401-19991224])查询组件([RFC3986]第3.4节),   添加其他查询参数时必须保留。该
  端点URI绝不能包含片段组件。

我问的原因是Google或Facebook似乎都没有保留任何查询字符串。

1 个答案:

答案 0 :(得分:4)

重新阅读规范似乎规范的引用部分不适用于OAuth服务器对URI的处理,而是OAuth客户端对原始端点URI的处理。

换句话说,如果我说在重定向到我的服务器进行OAuth授权时必须使用的OAuth端点是:

http://example.com/oauth.php?endpoint=token

然后当客户端将?response_type=code&client_id=...&state=...&redirect_uri=...添加到URI时,不允许丢弃原始端点uri中的“?endpoint = token”并且必须使用URI:

http://example.com/oauth.php?endpoint=token&response_type=code&client_id=...&state=...&redirect_uri=...

所以,至少就规范的这一部分而言,没有任何说明Facebook,Google等......除了“州”之外还必须保留任何未知的查询参数。

从技术上讲,您可以使用&state=参数以JSON格式传递自定义数据。虽然这可能有效,也可能无效。 IIRC我注意到当你使用特殊字符时,Meetup的OAuth 2实现似乎会破坏状态。我相信的东西是反对规范的。