首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCP存储静态站点调用GCP函数

GCP存储静态站点调用GCP函数
EN

Stack Overflow用户
提问于 2022-11-23 23:49:15
回答 2查看 21关注 0票数 0

我被赋予了一个“简单”的任务,似乎无法让它工作,而这些文档根本没有任何帮助。

任务:

  1. 创建一个POST函数,该函数接收字符串,然后返回相同的字符串
  2. 创建一个静态站点(仅仅是一个html表单),它允许用户提交一个调用上述函数的字符串。

现在,我已经在GCP中部署了一个Java函数,它可以通过Postman工作,但是每当我试图从本地静态站点调用它时,我都会得到一个403。

为了让邮递员工作,我使用了cloud命令:gcloud auth print-identity-token

然后,我取下该令牌,并将其放入Authorization令牌头中。

但是,当我在静态站点上这样做时,我得到403:

代码语言:javascript
复制
  fetch("https.myGoogleFunctionEndpoint.a.run.app", {
    method: "POST",
    mode: "no-cors",
    headers: {
      "Content-Type": "text/plain",
      "Authorization": "Bearer [myToken]
    },
    body: "Working!!!"
  })
    .then(response => response.body)
    .then(data => {
      console.log("Success:", data);
    })
    .catch((error) => {
      console.error("Error:", error);
    });

我不能使用--允许-未经认证的-顺便。它必须保密。

如何显示我是一个经过身份验证的用户?

我确实在标识平台中创建了一个用户,并且可以运行这个命令来获取ID令牌.但找不到任何地方告诉我我和那个记号有什么关系.或者如果我往正确的方向走!这只是为了在本地测试,我甚至没有把我的HTML和JS文件上传到桶里,也没有设置api网关.

任何帮助都将不胜感激!

这里是Java:

代码语言:javascript
复制
package gcfv2;

import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.HttpURLConnection;

public class HttpMethod implements HttpFunction {
  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {

    BufferedWriter writer = response.getWriter();

    switch (request.getMethod()) {
      case "GET":
        response.setStatusCode(HttpURLConnection.HTTP_OK);
        writer.write("Hello world!");
        break;
      case "POST":
        response.setStatusCode(HttpURLConnection.HTTP_OK);
        response.setContentType("text/plain; charset=utf-8");
        writer.write(request.getReader().readLine());
        break;
      default:
        response.setStatusCode(HttpURLConnection.HTTP_BAD_METHOD);
        writer.write("Something blew up!");
        break;
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2022-11-24 03:42:41

在创建OIDC标识令牌时,必须指定audience,即Cloud。

函数

一旦您通过了这部分开发,您就必须在您的应用程序中实现OAuth。谷歌拥有JavaScript 示例。不要在应用程序中硬编码令牌或凭据,除非是为此目的而设计的令牌或凭据。

用于客户端OAuth应用程序的Web2.0

票数 0
EN

Stack Overflow用户

发布于 2022-11-28 20:34:39

Google云功能只接受Google帐户(Gmail,Workspace,Service,.)提供IAM服务。

因此,如果您的用户通过第三方系统(使用SSO)进行身份验证,则不能将它们直接授予Cloud函数

一个解决方案是在云函数( API网关 )前面部署一个代理,它检查来自第三方的认证,然后执行云函数的安全调用

I 写一篇文章与非托管等价,ESPv2。您可以利用它来设置API网关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74554142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档