将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文档
他们的建议是:在安全的长期存储中保存刷新令牌,这通常不在客户端存储框架上完成。
由于您总是从BigQuery oAuth2 API获得刷新令牌,因此您可以在所有API调用上使用它,在服务器端完成,从而为用户提供无缝安全流。在google oauthplayground中查看此内容
BTW:通常从客户端进行调用是出于性能原因,在BigQuery案例中,因为它是一个大数据解决方案,我觉得服务器端调用中涉及的额外几秒钟不太重要
以上是关于将Google访问令牌从客户端传递到服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何使 IdentityServer 将用户身份添加到访问令牌?
spring boot - 假装客户端发送基本授权标头|将 jwt 令牌从一个微服务传递到另一个微服务