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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Google访问令牌从客户端传递到服务器相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

答案

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

以上是关于将Google访问令牌从客户端传递到服务器的主要内容,如果未能解决你的问题,请参考以下文章

何时将刷新令牌传递给 API

如何使 IdentityServer 将用户身份添加到访问令牌?

spring boot - 假装客户端发送基本授权标头|将 jwt 令牌从一个微服务传递到另一个微服务

如何将接收到的(承载)访问令牌传递给生成的 REST 客户端,以调用安全的 API-Gateway 端点

在重定向期间将令牌从 API 传递到前端

如何将我的 Instagram 访问令牌从我的 Express 服务器发送到 React 客户端?