Firebase和邮递员|为Google身份OAuth 2.0令牌生成JWT

时间:2020-08-22 10:34:12

标签: firebase google-cloud-platform jwt postman

我正在尝试在Cloud Firestore上执行一些管理任务(上传一些数据,等等)。我通读了文档here

使用Google Identity OAuth 2.0令牌和服务帐户来验证来自您的应用程序的请求,例如数据库管理请求。

这涉及文档here,有关如何生成JWT后如何进行Authorized API Call。我在努力产生JWT。

这是我尝试过的:

  1. 我形成了标题和声明集

    {"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
    }
    
  2. 转到https://jwt.io/以使用RSA256生成JWT。它要求提供公钥和私钥。我知道可以通过在https://console.cloud.google.com/iam-admin/serviceaccounts下创建的服务帐户在json formate中生成私钥。但是,我不确定从哪里获取公钥。 jwt.io不会生成jwt。我只会收到“无效签名”。

网络上有许多使用SDK或库的示例。但是,我看不到任何有关如何手动生成JWT(如果可能的话)以将其与Postman结合使用的示例。有想法吗?

1 个答案:

答案 0 :(得分:2)

感谢@JohnHanley。我设法生成令牌。这与Postman并不完全兼容(我仍然依靠jwt.io来生成jwt)。

  1. 创建服务帐户here后。添加密钥并下载p12文件(不是json)。默认密码为notasecret

  2. 将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

  3. 打开两个pem文件,并将私钥和公钥复制到jwt.io(使用RSA256选项)

  4. 确保您在iss字段中使用服务帐户的电子邮件地址

  5. 这是邮递员的请求:

    curl --location --request POST 'https://oauth2.googleapis.com/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion='{generated jwt}'

下一步将是使其完全在Postman内部。我没有尝试过,但是这个post似乎是一个选择

相关问题