如果用户已经通过登录页面或 auth0 进行了身份验证,我们是不是需要在 websocket 连接中对用户进行身份验证?

Posted

技术标签:

【中文标题】如果用户已经通过登录页面或 auth0 进行了身份验证,我们是不是需要在 websocket 连接中对用户进行身份验证?【英文标题】:Do we need to authenticate user in websocket connection if the user is already authenticated by login page or auth0?如果用户已经通过登录页面或 auth0 进行了身份验证,我们是否需要在 websocket 连接中对用户进行身份验证? 【发布时间】:2021-09-03 11:24:24 【问题描述】:

我是 web sockets 实现的新手,目前我已经对 node js 应用程序做出反应。如果用户注册并登录,用户将被重定向到主页。我正在尝试将我的应用程序与套接字 io 集成以用于通知和小型用户聊天目的。我的疑问是,我是否还需要在 Web 套接字连接中对用户进行身份验证?因为用户已经登陆我的页面了,有必要吗?

【问题讨论】:

通过登录我假设用户获得了一个会话?您需要将他们的套接字与会话相关联(即将套接字存储在会话中) 【参考方案1】:

初始化套接字客户端时,您需要发送从 Auth0 获得的令牌。然后在 BE 中,您需要检查该令牌。

SocketIo docs

【讨论】:

如果您的答案只是文档的复制粘贴,则无需在此处发布。只需使用link 发表评论即可。这样做的原因是文档可能会更改,因此您正在为未来的读者提供一个可能过时的版本。 @ChrisG 谢谢,我是新来的。编辑了我的答案。 没问题 :) 但是我不认为这是 OP 所要求的。他们不是在问如何在 socket.io 中进行身份验证,而是在问他们是否需要首先这样做。如果他们将用户的套接字保留在服务器的会话中,我认为他们不必单独验证套接字连接。 Afaik socket.io auth 适用于所有服务器-客户端流量都通过套接字运行的情况。 这使它成为一个有趣的问题。如果你想限制登录用户的套接字访问,如果你的 REST API 有基于 JWT 的身份验证,你会怎么做?至少在我的网络应用程序中,JWT 验证发生在 Express 的中间件中,因此套接字将保持打开状态。这也是我添加套接字身份验证的原因。不过,不确定这在 .NET 或 Spring 中是如何工作的,所以也许这需要一个更好的答案。 我猜如果登录页面受到保护并且您有 CORS,那么登录页面应该无法进行 WS 连接。但是如果你在同一个域上有一个不受保护的路由,什么会阻止用户从控制台运行一些套接字 io 代码并监听?

以上是关于如果用户已经通过登录页面或 auth0 进行了身份验证,我们是不是需要在 websocket 连接中对用户进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

Auth0 不会在电子邮件/密码的页面刷新时保持登录

Auth0.com,它是如何运作的?

Angular 2 和 JWT 身份验证 (Auth0)

Auth0 与 nodejs 用于运行用户特定的查询

如何在使用 auth0 进行身份验证的反应应用程序中获取用户信息

auth0 401 错误,在尝试身份验证代码交换时进行身份验证