2015-11-20 52 views
3

https://developers.google.com/identity/protocols/OAuth2WebServer#handlingresponse上阅读了Google OAuth文档,我很惊讶(或至少好奇为什么)没有关于state的文档。即使在非隐式流程中,防止CSRF攻击(http://tools.ietf.org/html/rfc6819#section-4.4.1.8)也是非常重要的。为什么Web OAuth的Google OAuth 2.0文档没有提及“状态”参数?

我是否缺少建议state的参数不是绝对必要?似乎应该在文档中强调,所以人们不会将他们的应用程序留下CSRF漏洞。

回答

2

它被提及但仅限于HTTP/Rest示例。看看HTTP/Rest选定的重定向部分。

重定向到谷歌的OAuth 2.0服务器

当你的应用程序需要访问用户数据,用户 重定向到谷歌的OAuth 2.0服务器。

HTTP/REST

生成一个URL在https://accounts.google.com/o/oauth2/v2/auth请求从谷歌的 的OAuth 2.0端点访问。 该端点可通过HTTPS访问;普通的HTTP连接是 被拒绝。

设定由谷歌 授权服务器的Web服务器应用程序支持的查询字符串参数有:

...省略文字...

状态 - 任何字符串 - 提供可能是任何国家在收到回复后对您的 应用有用。 Google授权 服务器往返此参数,因此您的应用程序会收到它发送的相同值 。为了减轻跨站请求伪造 (CSRF),强烈建议在该状态中包含防伪标记,并在响应中对其进行确认。请参阅OpenID Connect获取 示例如何执行此操作。