gpt4 book ai didi

node.js - Auth0 和 Express-openid-connect/回调没有响应

转载 作者:行者123 更新时间:2023-12-05 05:46:13 27 4
gpt4 key购买 nike

我有一个简单的 Node 快速应用程序在端口 3002 上运行(因为 3000 已被使用)。为了让用户登录,我使用 Auth0 和 Express-openid-connect 包。

每次我尝试登录时,我都会卡在名为:提交此表单 的空白页面,但它不会停止加载。 Auth0 中的日志始终显示:成功登录。但是,我可以毫无问题地访问非登录保护路由。

/callback 路由抛出以下错误:

Error: Request aborted
at IncomingMessage.<anonymous> (/workspace/node_modules/formidable/lib/incoming_form.js:122:19)
at IncomingMessage.emit (events.js:400:28)
at abortIncoming (_http_server.js:569:9)
at socketOnEnd (_http_server.js:585:5)
at Socket.emit (events.js:412:35)
at endReadableNT (internal/streams/readable.js:1334:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21)

但我认为当请求被中止时它应该这样做,对吧?

我的 Auth0 设置应该是正确的,因为它不会导致错误。

我的 Express-openid-connect 中间件看起来是这样链接的:

require('dotenv').config()
const { auth } = require('express-openid-connect')

module.exports = auth({
authRequired: false,
issuerBaseURL: process.env.AUTH0_ISSUER_URL,
baseURL: process.env.BASE_URL,
clientID: process.env.AUTH0_CLIENT_ID,
secret: process.env.AUTH0_SECRET
})

和环境变量:

BASE_URL=http://localhost:3002
AUTH0_ISSUER_URL=...
AUTH0_CLIENT_ID=...
AUTH0_SECRET=H+F/0yW/i4X11EDzAFBZE2iaUTy4jBMo3gBWwXRkoY8W3DJ+E24tnt8Q5y+rF7QO

AUTH0_SECRET 只是一个随机字符串,但我用 Auth0 提供的客户端密码进行了尝试,但没有任何改变。

AUTH0_ISSUER_URL 是正确的 url,因为每个请求都会显示在日志中。

AUTH0_CLIENT_ID 是正确的客户端 ID,因为日志显示了正确的应用程序。

如果我手动转到 localhost:3002/callback,我会收到以下预期错误:

BadRequestError: state missing from the response
at /workspace/node_modules/express-openid-connect/middleware/auth.js:121:31
at processTicksAndRejections (internal/process/task_queues.js:95:5)

这意味着我的/callback 路由应该可以访问并且可以正常工作。

但是我可以手动复制参数,然后一切正常,但是这个过程对生产没有用。

我什至尝试通过控制台手动提交表单

document.forms[0].submit()

但是它返回了 undefined 并且页面没有再次停止加载。

所以对我来说,该表单的 submit() 函数有问题。

最佳答案

我对此的理解是 Express OpenID Connect 包装并处理了大部分事情,因此开发人员在设置协议(protocol)流时不会遇到麻烦。意思是,您不需要自己访问 /callbackauth 来自 express OpenID Connect,一旦它被添加到 express app 中,提供我们的 express app /login, /callback/logout 路由。您可以在这里找到更多信息 https://auth0.com/docs/quickstart/webapp/express .

在你的问题中,我看到有两点需要讨论。

  1. Auth0 中的日志始终显示:成功登录。但是,我可以毫无问题地访问非登录保护路由。
  1. 您不应该自己调用/callback,它是库(express openID Connect)提供的流程的一部分。您可以下载他们的示例项目并自己尝试:https://github.com/auth0-samples/auth0-express-webapp-sample/tree/master/01-Login .您可以在那里看到示例项目代码未添加 /callback 路由。 /login/logout 路由也是如此。

运行链接中的示例项目后的屏幕截图:

  • 当点击登录时,顺序是这样的:/login/callback,然后是/ enter image description here
  • 在网络选项卡中你可以看到更多enter image description here

关于node.js - Auth0 和 Express-openid-connect/回调没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71213565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com