我正在尝试在Cloud Firestore上执行一些管理任务(上传一些数据,等等)。我通读了文档here
使用Google Identity OAuth 2.0令牌和服务帐户来验证来自您的应用程序的请求,例如数据库管理请求。
这涉及文档here,有关如何生成JWT后如何进行Authorized API Call。我在努力产生JWT。
这是我尝试过的:
我形成了标题和声明集
{"alg":"RS256","typ":"JWT"}.
{
"iss":"761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com",
"scope":"https://www.googleapis.com/auth/prediction",
"aud":"https://oauth2.googleapis.com/token",
"exp":1328554385,
"iat":1328550785
}
转到https://jwt.io/以使用RSA256生成JWT。它要求提供公钥和私钥。我知道可以通过在https://console.cloud.google.com/iam-admin/serviceaccounts
下创建的服务帐户在json formate中生成私钥。但是,我不确定从哪里获取公钥。 jwt.io不会生成jwt。我只会收到“无效签名”。
网络上有许多使用SDK或库的示例。但是,我看不到任何有关如何手动生成JWT(如果可能的话)以将其与Postman结合使用的示例。有想法吗?
答案 0 :(得分:2)
感谢@JohnHanley。我设法生成令牌。这与Postman并不完全兼容(我仍然依靠jwt.io来生成jwt)。
创建服务帐户here后。添加密钥并下载p12文件(不是json)。默认密码为notasecret
将p12转换为pem并提取公钥:
$openssl pkcs12 -in postman-admin-private.p12 -out postman-admin-private.pem -nodes
$openssl rsa -in postman-admin-private.pem -outform PEM -pubout -out postman-admin-public.pem
打开两个pem文件,并将私钥和公钥复制到jwt.io(使用RSA256选项)
确保您在iss
字段中使用服务帐户的电子邮件地址
这是邮递员的请求:
curl --location --request POST 'https://oauth2.googleapis.com/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion='{generated jwt}'
下一步将是使其完全在Postman内部。我没有尝试过,但是这个post似乎是一个选择