我被赋予了一个“简单”的任务,似乎无法让它工作,而这些文档根本没有任何帮助。
任务:
现在,我已经在GCP中部署了一个Java函数,它可以通过Postman工作,但是每当我试图从本地静态站点调用它时,我都会得到一个403。
为了让邮递员工作,我使用了cloud命令:gcloud auth print-identity-token
然后,我取下该令牌,并将其放入Authorization令牌头中。
但是,当我在静态站点上这样做时,我得到403:
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:
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;
}
}
}发布于 2022-11-24 03:42:41
在创建OIDC标识令牌时,必须指定audience,即Cloud。
一旦您通过了这部分开发,您就必须在您的应用程序中实现OAuth。谷歌拥有JavaScript 示例。不要在应用程序中硬编码令牌或凭据,除非是为此目的而设计的令牌或凭据。
https://stackoverflow.com/questions/74554142
复制相似问题