如何在GCP云功能上调用“已认证”功能

时间:2019-08-21 10:13:44

标签: google-cloud-platform google-cloud-functions

在GCP云功能上,如果我取消选中“允许未经身份验证的调用” ,则只能通过提供的访问令牌gcloud auth print-access-token命令访问HTTP API,这是一个JWT令牌,如何如何通过 postman 获得类似的访问令牌,以便我的移动应用程序可以获取类似的令牌并能够调用云功能?如果如何?我应该在GCP上设置自己的OAuth服务器吗?

PS 请参考此问题 here

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

curl -i https://[REGION]-[PROJECT_ID].cloudfunctions.net/[FUNCTION_NAME] -H "Authorization: bearer $(gcloud auth print-identity-token)"

我还建议您查看Authenticating Developers, Functions, and End-users文档,以了解使用Google Cloud Functions进行身份验证的更多方法。

答案 1 :(得分:0)

这就是如何以编程方式生成令牌 -

// const url = 'https://TARGET_URL';
const {GoogleAuth} = require('google-auth-library');
const auth = new GoogleAuth();

async function request() {
  if (!targetAudience) {
    // Use the request URL hostname as the target audience for requests.
    const {URL} = require('url');
    targetAudience = new URL(url).origin;
  }
  console.info(`request ${url} with target audience ${targetAudience}`);
  const client = await auth.getIdTokenClient(targetAudience);
  const res = await client.request({url});
  console.info(res.data);
}

request().catch(err => {
  console.error(err.message);
  process.exitCode = 1;
});

生成令牌后,您可以将其作为 -

在标头中传递
Authorization: Bearer ${myToken}

在此处阅读更多文档 - https://cloud.google.com/functions/docs/securing/authenticating#functions-bearer-token-example-nodejs