【问题标题】:How do I generate JWT token via google-auth-library to use it for api gateway?如何通过 google-auth-library 生成 JWT 令牌以将其用于 api 网关?
【发布时间】:2022-11-21 21:29:57
【问题描述】:

看看这个 question 我可以看到有一种方法可以使用 google auth 库生成由服务帐户签名的 jwt 令牌

def generate_jwt():
    payload = {"iat": iat, "exp": exp, "iss": iss, "aud":  aud, "sub": iss, "email": iss, "company": company}

    signer = google.auth.crypt.RSASigner.from_service_account_file(sa_keyfile)
    jwt = google.auth.jwt.encode(signer, payload)

    return jwt
  1. 如何使用 nodejs 实现此目的?
  2. 在 .yaml 文件的 Security 部分,我需要为 x-google-issuer 和 x-google-jwks_uri 使用什么值,请详细解释这些值的用途?
     x-google-issuer: "mygserviceaccount"
     x-google-jwks_uri: "mygserviceaccount.com"
    

    例如,如果我使用服务帐户电子邮件生成 jwt:resource-access@xyz.iam.gserviceaccount.com 然后 x-google-issuer:"resource-access@xyz.iam.gserviceaccount.com" 和 x-google-jwks_uri:"https://www.googleapis.com/service_accounts/v1/metadata/x509/resource-access@ xyz.iam.gserviceaccount.com”这是准确的吗?

【问题讨论】:

    标签: google-cloud-platform jwt api-gateway


    【解决方案1】:

    如果有人仍在寻找答案,我试过了,它对我有用

    生成由服务帐户签名的 JWT 的代码。

    const path = require("path");                                         
         let jwt = require("jsonwebtoken");                                                           
         let servAcc = require(path.join(__dirname,pathToServAcc));                                         let token = jwt.sign(                                                  {
            iss: servAcc.client_email,
            sub: req.query.User_ID || "",
            aud: process.env.GATEWAY_MANAGED_SERVICE_URL,
            iat: Math.floor(Date.now() / 1000),
            exp: Math.floor(Date.now() / 1000) + 1000000,
          },
          servAcc.private_key,
          { algorithm: "RS256" }
        );
    

    yaml 文件的安全部分

    securityDefinitions:   api_key:
        type: "apiKey"
        name: "x-api-key"
        in: "header"   jwt_auth:
        authorizationUrl: ""
        flow: "implicit"
        type: "oauth2"
        x-google-issuer: "service acc email"
        x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/service acc email"
    

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 2017-04-06
      • 2021-08-12
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2022-07-19
      • 2019-08-08
      相关资源
      最近更新 更多