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