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

tho*_*aux 7 oauth-2.0 jwt vue.js auth0 vuejs3

我正在尝试设置一个 Vue3 SPA,后面有 NestJS API。我设置了 Auth0 租户和客户端以与 SPA 集成,并计划将生成的 JWT 发送到我的 API。在我的 SPA 中,我使用vue-auth0-plugin ,它在底层使用@auth0/auth0-spa-js 。

我已经成功使用 PKCE 流程设置了身份验证代码,直到我收到 id、访问和刷新令牌。但是,访问令牌出了问题,我无法理解为什么会发生这种情况。有效负载是无效的 JSON,并且令牌包含 2 个连续的.. 当我将令牌粘贴到 jwt.io 中时,标头解码如下:

{
  "alg": "dir",
  "enc": "A256GCM",
  "iss": "https://xyz.auth0.com/"
}
Run Code Online (Sandbox Code Playgroud)

我会期待:

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "w1-e..."
}
Run Code Online (Sandbox Code Playgroud)

据我所知,我尚未启用 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...
Run Code Online (Sandbox Code Playgroud)

提前谢谢了。

Nic*_* K9 7

正如 Gary 所说,令牌采用 JWE 格式。根据Auth0 社区帖子,缺少有效负载的解决方案是提供一个audience参数。您应该能够将该参数包含在端点的查询字符串/authorize中。

  • 多谢!他们的(入门)文档中没有明确提到这一点。定义一个 API 并使用该标识符作为受众,确实会返回一个 JWT,正如人们所期望的那样 (2认同)
  • 天哪,这让我在花了好几个小时对如何让 auth0 在 Azure API 管理中工作进行故障排除后救了我 (2认同)