开发者社区> 问答> 正文

函数计算开启jwt鉴权,mkjwk.org上生成的jwks,nodejs中怎么用私钥生成token?

展开
收起
游客ocberlpfs3ca6 2024-07-26 22:46:24 42 0
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    使用 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']
    
    2024-07-27 10:57:10
    赞同 3 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
探究 Node.js 的服务端之路 立即下载
个推微服务实践 基于OpenResty 和Node.js 立即下载
沪江基于Node.js大规模应用实践 立即下载