首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过google库生成JWT令牌,以便将其用于api网关?

如何通过google库生成JWT令牌,以便将其用于api网关?
EN

Stack Overflow用户
提问于 2022-11-15 13:45:45
回答 1查看 36关注 0票数 0

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

代码语言:javascript
复制
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文件的安全部分中实现这一目标?对于x-google-发行人和x-google-jwks_uri,我需要使用的值是什么?

代码语言:javascript
复制
 x-google-issuer: "mygserviceaccount"
 x-google-jwks_uri: "mygserviceaccount.com"

例如,如果我使用服务帐户email: resource-access@xyz.iam.gserviceaccount.com生成jwt,那么x-google-issuer:"resource-access@xyz.iam.gserviceaccount.com“和x_uri:”https://www.googleapis.com/service_accounts/v1/metadata/x509/resource-access@xyz.iam.gserviceaccount.com“是否准确?

EN

回答 1

Stack Overflow用户

发布于 2022-11-17 15:19:04

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

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

代码语言:javascript
复制
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文件的安全部分

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74446713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档