将Google访问令牌从客户端传递到服务器

时间:2019-04-16 12:47:27

标签: google-cloud-platform google-bigquery google-python-api

我有一个与Google服务集成的应用程序(具体来说是Google Bigquery API。)

我正在客户端上验证用户身份,没有脱机访问范围(因此没有刷新令牌),并且在客户端上执行了大多数操作。但是我想在服务器端执行一些操作(仍然代表经过身份验证的用户)。

当前,我正在将访问令牌(通过https)传递到服务器端,使用此令牌初始化服务器端的Google库,并在那里进行操作。

我在Google上找到的与此相关的文档要么在服务器端使用身份验证,并带有刷新令牌,要么完全在客户端使用。找不到有关此混合案例的最佳做法的文档。

简而言之,我想做的是使用后端在客户端获取的短暂访问令牌。

此方法是否存在安全风险?不管怎么说,这是我想要做的建议方法吗?

1 个答案:

答案 0 :(得分:0)

无论BigQuery oAuth2实现如何,市场上一般的安全性最佳做法是仅在客户端存储短期安全性令牌。甚至这可能是一个挑战,具体取决于您的客户端安全技术和框架。

OAuth 2.0 Authorization Framework: Bearer Token Usage官方的两个要点

令牌存储

  

不要将承载令牌存储在cookie中:实现不得存储         Cookie中的承载令牌可以以明文形式发送(         是Cookie的默认传输模式)。实作         将承载令牌存储在cookie中的必须采取预防措施         防止跨站点伪造。

短期令牌

  

发布短期的承载令牌:令牌服务器应该发布         短期(一小时或更短)的承载令牌,尤其是当         向在Web浏览器或其他浏览器中运行的客户端发行令牌         可能发生信息泄漏的环境。使用         短期持有者代币可以减少它们的影响         泄漏。

现在在此link

中查看Bigquery文档

enter image description here

他们的建议是:将刷新令牌保存在安全的长期存储中,这通常在客户端存储框架上没有完成。

由于您总是从BigQuery oAuth2 API获得刷新令牌,因此可以在服务器端完成的所有API调用中使用它,从而为用户提供了无缝的安全流程。在google oauthplayground

中进行检查

enter image description here

BTW:通常从客户端进行呼叫是出于性能方面的考虑,在BigQuery案例中,由于这是一种大数据解决方案,因此我认为服务器端呼叫所涉及的额外几秒钟不太重要