【发布时间】:2023-04-01 01:00:01
【问题描述】:
我正在开发一个网站,并且存在使用 Google Cloud Datastore 的现有身份验证。我似乎找不到任何文档来说明如何为最终用户生成与云端点兼容的 JSON Web 令牌。
非常感谢您可以清除的任何链接。
【问题讨论】:
标签: google-app-engine google-cloud-platform cloud google-cloud-endpoints endpoint
我正在开发一个网站,并且存在使用 Google Cloud Datastore 的现有身份验证。我似乎找不到任何文档来说明如何为最终用户生成与云端点兼容的 JSON Web 令牌。
非常感谢您可以清除的任何链接。
【问题讨论】:
标签: google-app-engine google-cloud-platform cloud google-cloud-endpoints endpoint
我正在开发一个网站,并且有使用 Google 云的现有身份验证 数据存储。
如果您当前的身份验证系统正在生成您自己的 OAuth 令牌,则您无法将这些令牌用于 Google Cloud Endpoints。您必须通过 Google 机制(Google 帐户)生成您的令牌。否则,Google 服务无法验证您的令牌。检查您的后端是否正在创建令牌或使用 Google OAuth 创建令牌。但是,存在三种类型的令牌:访问令牌、刷新令牌和客户端 ID 令牌。您的后端可能需要修改以生成客户端 ID (OIDC) 令牌。有些系统只生成前两个。
以下假设 Google 颁发了 OAuth 令牌。
是的,这是可能的,而且非常简单。我给你举个例子。
注意:我写了一篇关于如何使用 CURL 生成 OAuth 2.0 令牌的文章,包括客户端 ID 令牌。 Google OAuth 2.0 – Testing with Curl – Refresh Access Token我的文章向您展示了步骤,以便您可以使用任何语言进行编码。
使用 CLI,生成 OAuth 2.0 客户端 ID 令牌:
gcloud config config-helper --format "value(credential.id_token)" --force-auth-refresh
保存生成的令牌。在本例中将其称为 TOKEN。
URL 是端点 URL。
现在向您的端点发出请求:
curl -H "Authorization: Bearer TOKEN" URL
如果您想了解 TOKEN JWT 中的内容:
卷曲https://oauth2.googleapis.com/tokeninfo?id_token=TOKEN
返回的 JSON 将如下所示:
{
"aud": "https://cloudtask-abcdefabcdef-uc.a.run.app",
"azp": "0123456789077420983142",
"email": "cloudtask@development.iam.gserviceaccount.com",
"email_verified": "true",
"exp": "1559029789",
"iat": "1559026189",
"iss": "https://accounts.google.com",
"sub": "012345678901234567892",
"alg": "RS256",
"kid": "0123456789012345678901234567890123456789c3",
"typ": "JWT"
}
我似乎找不到任何说明如何生成 JSON Web 令牌与最终用户的云端点兼容。
这是一个链接,其中包含有关 Google Cloud Endpoints 身份验证的详细信息:
Google ID token authentication
您可能想知道为什么不能使用自己的令牌。原因是 Google 无法验证令牌上的签名。
OAuth 令牌 (Signed-JWT) 使用私钥进行签名。它们使用公钥进行验证。谷歌在https://www.googleapis.com/oauth2/v1/certs发布公钥
这允许 Google 和其他人验证 Google 签名的数据。当您生成令牌时,Google 无法访问您的公钥来验证签名。因此,您必须使用 Google 生成的令牌,以便 Google 可以验证它们。
【讨论】:
您可以查看this。您仍然需要一个 Google 服务帐户,但只使用其私钥来生成 JWT。 ESP 将对其进行验证。
【讨论】: