google-cloud-functions - 在 Java 中对调用谷歌云功能的客户端进行身份验证
问题描述
我在 Java 中有一个谷歌云功能。客户端将使用 HTTP 触发器 URL 调用该函数。
但这并不安全。我浏览了一些文档,说您应该传递令牌或客户端 ID,然后在服务器端进行验证。
谁能详细解释一下,如果有的话,请提供代码示例。
我的疑问是在客户端使用 Http 触发器调用函数时对其进行身份验证
解决方案
此页面很好地解释了您必须在 Cloud Functions 上对请求者进行身份验证的所有能力。
如果您有用户,最好的方法是使用Firebase Auth(我们的Google Cloud Identity Platform,它只是比Firebase Auth 更先进的解决方案,具有更多功能)
但是,您需要向所有用户授予 cloudfunction.invoker 角色,以允许他们调用 Cloud Functions。这可能很困难。您也可以在您身边执行检查,但在这种情况下,您删除了 google 的安全(过滤器)层,您必须自己检查所有流量(在计费和受到攻击的情况下,这并不安全)。
不推荐使用最新的解决方案 API 密钥,尤其是对于用户而言。但对于机器对机器来说,有时它是唯一的解决方案。但是,没有开箱即用的解决方案,为此我写了一篇文章,解释了如何创建云端点(或现在的云 API 网关,它是具有 ESPv2 的云端点的无服务器解决方案)来接受 API 密钥。
使用此最新解决方案,如果您更改安全定义,您还可以接受来自 Firebase Auth(或 Cloud Identity Platform)的 OAuth2 令牌,但是这一次,您无需授予 Cloud Functions IAM 角色上的所有用户。令牌只需有效,它是用于执行调用的 Cloud Endpoint 服务帐户(因此需要在 Cloud Functions 上进行授权)。
此外,因为您可以接受 OAuth2 令牌,您也可以接受非 Google 令牌,从而让您的用户处于任何符合 OAuth2 的 IDP(KeyCloak、Okta、...)
推荐阅读
- python - 检测小图像中斑点的位置
- flutter - 我在某些小部件中遇到 stackoverflowerror,但我不知道为什么以及这个错误是什么
- vue.js - 重置密码链接Laravel 8中的动态域
- julia - Models.Fitting 类型故障
- c# - Xamarin 表单项目从框架中获取不正确的本机数字
- elisp - 我需要这个函数来总结无限参数的数量
- python - 在熊猫中滚动一阶导数和二阶导数
- php - 计算与先前 created_at 时间差的最佳方法 - Laravel
- c# - VSCode 终端 - 未着色的异常 (MacOS)
- python - 在类中调用函数并在另一个函数中使用结果