Auth0:无效的访问令牌负载,使用 A256GCM 算法加密的 JWT

Auth0: Invalid access token payload, JWT encrypted with A256GCM algorithm

我正在尝试在后面设置一个带有 NestJS API 的 Vue3 SPA。我将我的 Auth0 租户和客户端设置为与 SPA 集成,并计划将生成的 JWT 发送到我的 API。在我的 SPA 中,我使用引擎盖下的 vue-auth0-plugin, which uses @auth0/auth0-spa-js

我已经使用 PKCE 流程成功设置了授权码,直到我收到 ID、访问和刷新令牌。但是,访问令牌有问题,我不明白为什么会这样。有效负载无效 JSON 并且令牌包含 2 个连续的 .。当我将令牌粘贴到 jwt.io 时,header 被解码如下:

{
  "alg": "dir",
  "enc": "A256GCM",
  "iss": "https://xyz.auth0.com/"
}

我预计:

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "w1-e..."
}

据我所知,我还没有启用 JWT 加密(我使用向导设置 SPA 客户端),谁能指出我遗漏了什么?为了完整起见,这是我的身份验证请求的格式:

https://xyz.auth0.com/authorize
    ?client_id=REq...
    &redirect_uri=http%3A%2F%2Flocalhost%3A1337
    &scope=openid%20profile%20email
    &response_type=code
    &response_mode=query
    &state=a2...
    &nonce=bT...
    &code_challenge=GjSw...
    &code_challenge_method=S256
    &auth0Client=eyJu...

非常感谢。

正如 Gary 所说,令牌是 JWE 格式。根据this Auth0 community post, the solution to the missing payload is to provide an audience parameter. You should be able to include that parameter in the query string to the /authorize endpoint.