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

问题描述 投票:1回答:1

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

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

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

我在Google上发现的有关此问题的文档要么是在服务器端使用身份验证,要么是使用刷新令牌,要么完全在客户端使用。无法找到建议此混合案例的最佳做法的文档。

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

这种方法有安全隐患吗?无论如何,这是建议的做我想要的方式吗?

google-cloud-platform google-bigquery google-python-api
1个回答
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案例中,因为它是一个大数据解决方案,我觉得服务器端调用中涉及的额外几秒钟不太重要

© www.soinside.com 2019 - 2024. All rights reserved.