Google+服务器端令牌验证

时间:2015-01-05 21:24:09

标签: oauth oauth-2.0 google-plus google-oauth

我在我的应用程序中使用Google+登录。用户返回access_token,我想将该令牌传递给我的服务器并使用google进行验证。让我感到困惑的是google文档中关于此安全性的相互矛盾的信息:

https://developers.google.com/accounts/docs/OAuth2UserAgent#validatetoken

说我可以使用access_token进行ajax调用,以检查它是否是有效的令牌。但是,这对我来说很好,

https://developers.google.com/+/web/signin/client-to-server-flow

表示永远不要将access_token作为http请求中的参数发送到我的服务器。

那么,使用https://www.googleapis.com/oauth2/v1/tokeninfo是否安全?

2 个答案:

答案 0 :(得分:2)

将HTTP请求中的访问令牌发送到您的服务器并将其发送到 Google 的服务器之间存在差异。

将访问令牌发送到Google的tokeninfo端点进行验证时,可以将其作为查询参数发送,因为它在HTTP上运行,Google首先是访问令牌的发布者,因此您将其发送到已知和受控制的环境中。谷歌假设谷歌知道它在做什么。

但是当从客户端向您的服务器发送访问令牌(并且您必须确保使用HTTP)时,将其作为查询参数传递则不太安全,因为它可能最终会出现在日志和流量中分析服务器端的数据。例如,在客户端和服务器之间有代理,或者您正在使用Web托管。

最重要的是,针对启用了OAuth 2.0的系统进行了复杂的攻击,利用了带有令牌的查询参数最终位于LocationReferer标头中的事实。最好避免暴露于任何类似漏洞的可能性。要获得对这些攻击的良好印象,请参阅http://www.oauthsecurity.com/,尤其是有关打开重定向的部分。

答案 1 :(得分:0)

我认为文档说不使用访问令牌作为Web应用程序的GET参数,因为大多数Web服务器都会记录在不受保护的位置访问的URL,除非它专门配置为不执行此操作。因此,如果您向后端服务器发出了AJAX请求,则用户的访问令牌将在Web服务器日志中公开。

使用tokeninfo端点应该没问题,因为Google会执行日志记录并处理日志的安全性。 HTTPS保护请求URL和消息,因此使用访问令牌作为GET参数没有特别的顾虑。