You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中Auth0配置RS256却返回加密JWT而非签名JWT的问题

解决Auth0返回加密JWT而非RS256签名JWT的问题

排查与修复步骤:

  • 检查Auth0 API的加密设置
    登录Auth0控制台,定位到受众为https://localhost:5000的API:

    1. 进入该API的Settings页面
    2. 找到Token Settings区域,确认Token Signature Algorithm已设为RS256
    3. 重点查看Enable Encryption选项——如果该选项处于开启状态,Auth0会返回加密JWT(JWE)而非签名JWT(JWS),必须关闭此选项
  • 调整getAccessToken调用参数
    显式声明scope参数(即使使用默认权限),同时确保audience与Auth0中API的受众值完全匹配:

    import { getAccessToken } from '@auth0/nextjs-auth0';
    
    export default async function token(req, res) {
      try {
        const { accessToken } = await getAccessToken(req, res, {
            audience: 'https://localhost:5000',
            scope: 'openid profile email'
          });
          
        res.status(200).json({ accessToken });
      } catch (error) {
        res.status(500).json({ message: error.message });
      }
    }
    
  • 验证应用与API的授权关系
    确认你的Next.js应用在Auth0中已被授权访问目标API:

    1. 进入Auth0应用的APIs页面
    2. 确保https://localhost:5000已在授权API列表中,且权限配置正确

补充说明

alg: dir代表直接加密(Direct Encryption),属于JWE格式;而RS256是JWS的签名算法。Auth0开启token加密时会自动返回JWE,这是导致你当前问题的核心原因。关闭加密后,就能得到头部包含alg: RS256的签名JWT。

内容的提问来源于stack exchange,提问作者StuP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:54:58