版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
使用 jsonwebtoken 库来生成和验证 JWT
npm install jsonwebtoken
使用 jsonwebtoken 库和您的私钥来生成 JWT。
const jose = require('node-jose');
const jwt = require('jsonwebtoken');
// 异步加载私钥
const privateKeyPem = `-----BEGIN PRIVATE KEY-----
你的私钥内容
-----END PRIVATE KEY-----`;
jose.JWK.asKey(privateKeyPem, 'pem')
  .then(jwk => {
    // 使用私钥生成 JWT
    const token = jwt.sign(
      { data: '要加密的数据' },
      jwk, // 使用私钥的 JWK 格式
      { algorithm: 'RS256' } // 使用的签名算法
    );
    console.log(token);
  })
  .catch(error => {
    console.error('Error generating JWT:', error);
  });
使用 jwks-rsa 中间件来自动响应 JWKS 请求
const jwksRsa = require('jwks-rsa');
const jwks = jwksRsa({
  cache: true,
  rateLimit: true,
  jwksRequestsPerMinute: 10, // 根据您的需要设置
  jwksUri: 'https://mkjwk.org/your-jwks-uri' // 您的 JWKS 端点
});
// 使用中间件来处理 JWT 验证
app.use(jwt({
  secret: jwks.expressJwtSecret( {
    cache: true,
    requestProperty: 'user',
    algorithms: ['RS256']