I\xe2\x80\x99m@auth0/nextjs-auth0在带有外部 GraphQL API 的 NextJS 应用程序中使用该包。我们试图阻止用户在注销后使用appSession cookie调用API。由于不可能使访问令牌无效,我们决定尝试设置刷新令牌轮换,但到目前为止我们惨败。
我们有以下设置:
\n在我的应用程序中:\n我的 ID 令牌过期设置为 1800,\n我打开了刷新令牌轮换,重用间隔为 0。\n我打开了刷新令牌过期,绝对生命周期为 360
\n在系统 API 上:\n我将令牌过期设置为 60 秒(为了测试更快,但计划稍后将其移至 15 m)
\n我将其设置AUTH0_SCOPE为'openid profile offline_access'\n 并AUTH0_AUDIENCE设置为我的生产网站地址。
我们的api/auth/[...auth0].ts文件只有默认的handleAuth@auth0/nextjs-auth0
在我的上api/graphql.ts,我使用一个withApiAuthRequired调用getAccessToken(req, res)将其发送到 API。
从您第一次登录时起,它就可以正常工作,如果您继续在应用程序上导航,则在调用时它将毫无问题地生成新令牌getAccessToken(req, res),但如果您在新选项卡中打开页面或在令牌过期后刷新应用程序,应用程序完全崩溃。在我看来,auth0 通过了身份验证,因为 appSession 仍然有效(24 小时到期),但在getAccessToken(req, res)(1 分钟到期)时失败,查看日志,它说它没有\xe2\x80\x99t 具有刷新令牌。这是一个错误示例:
{\n "date": "2023-07-26T03:01:15.413Z",\n "type": "fertft",\n "description": "Unknown or invalid refresh token.",\n "connection_id": "",\n …Run Code Online (Sandbox Code Playgroud)