查看这个question,我可以看到有一种方法可以使用google库生成由服务帐户签名的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。
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“是否准确?
发布于 2022-11-17 15:19:04
如果有人还在找答案,我试过了,它对我有用。
生成由服务帐户签名的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"https://stackoverflow.com/questions/74446713
复制相似问题