我在一个网站上工作,并且已有使用Google Cloud Datastore的身份验证。我似乎找不到任何文档来说明如何为最终用户生成与云端点兼容的JSON Web令牌。
非常感谢您可以清除的任何链接。
答案 0 :(得分:1)
我在一个网站上工作,并且已有使用Google Cloud的身份验证 数据存储。
如果当前的身份验证系统正在生成自己的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
保存生成的令牌。在此示例中,将其称为令牌。
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"
}
我似乎找不到任何文档来说明如何生成 面向最终用户的与Cloud Endpoints兼容的JSON Web令牌。
以下是包含有关Google Cloud Endpoints身份验证的详细信息的链接:
Google ID token authentication
您可能想知道为什么不能使用自己的令牌。原因是Google无法验证令牌上的签名。
OAuth令牌(Signed-JWT)是使用私钥签名的。使用公钥验证它们。 Google在https://www.googleapis.com/oauth2/v1/certs
上发布公钥这允许Google和其他人验证Google签名的数据。当您生成令牌时,Google无法访问您的公钥来验证签名。因此,您必须使用Google生成的令牌,以便Google可以对其进行验证。
答案 1 :(得分:0)
您可以签出this。您仍然需要一个Google服务帐户,但仅使用其私钥来生成JWT。 ESP将对其进行验证。