【发布时间】:2021-04-27 14:38:17
【问题描述】:
我正在尝试验证从我的 Google Cloud Function 到我在 App Engine 上的 API 的请求(标准环境)。
我有一些工作,但我是 OAuth2 的新手,正在寻找健全性检查。
在我的 Cloud Function 中,我向我的 API 发送经过身份验证的请求,执行以下操作:
import { GoogleAuth } from 'google-auth-library';
// Send Request Code:
const auth = new GoogleAuth();
const tokenClient = await auth.getIdTokenClient(`/protectedEndpoint`);
await tokenClient.request({
url: `https://${process.env.GCLOUD_PROJECT}.appspot.com/protectedEndpoint`,
method: 'POST',
});
在 API(在 App Engine 上)中,我执行以下操作:
import { GoogleAuth } from 'google-auth-library';
// Handle Request Code:
const token = <Bearer token parsed from request headers>
const googleAuth = new GoogleAuth();
const tokenClient = await googleAuth.getIdTokenClient('');
const loginTicket = await tokenClient.verifyIdToken({
idToken: token,
audience: '/protectedEndpoint',
});
if (loginTicket.getUserId() !== process.env.SERVICE_ACCOUNT_ID)) {
throw new Error('Unauthenticated Service Account');
}
return 'Successful Authentication'
注意:在这两种情况下,我都使用 Google 的默认应用程序凭据来初始化 GoogleAuth 客户端。 (我的默认 App Engine 服务帐户)
这一切都有效。我的函数向我的 API 发送请求,我的 API 能够解析不记名令牌并告诉我它来自我批准的服务帐户......但我不是 100% 确信这实际上是安全的。有人可以在没有凭据的情况下欺骗我的服务帐户吗?
提前致谢!
【问题讨论】:
标签: google-app-engine google-cloud-platform oauth-2.0 google-cloud-functions google-oauth