评估 FeatherJS 身份验证需求
Evaluating FeatherJS Authentication Needs
我和我的同事想构建一个聊天应用程序(ReactJS <-> NodeJS),我们一直在寻找最好的框架来实现这一目标。 FeathersJS 似乎无疑是最稳定和功能最丰富的 socket.io 包装器。
但是,由于我们希望允许我们的应用程序扩展,我们决定将此聊天功能拆分到与主节点后端不同的节点进程中。
然而,聊天功能仍然需要身份验证和授权,我们希望避免对这两项服务进行重复身份验证。因此,我们提出的解决方案是使用会话 cookie 查询主节点后端以在让用户使用聊天服务之前对用户进行身份验证。
FeathersJS 是建立持久的套接字连接,还是会为每条消息建立套接字连接sent/received?在第一种情况下,我们可以继续我们的架构,而在第二次我们必须审查,因为这会在主后端产生高负载。
谢谢!
有多种拆分服务的方法,每种方法各有优缺点。对于 Feathers 来说,一件普遍重要的事情是没有会话,只有 JSON web tokens。 JWT 是无状态的,可以被共享相同秘密的任何服务器读取,因此不必有中央会话存储。我能想到的两个主要选项是:
- 有一个主要的应用程序来处理授权和管理所有连接的客户端,但不是有与数据库对话的服务,而是连接到内部网络中单独的简单个体 API 服务器。这是更简单的设置,优点是内部 API 服务器可以非常简单并且根本不需要身份验证(因为允许主应用程序执行所有操作并将根据经过身份验证的用户限制进行查询).缺点是主应用程序仍然是瓶颈(但负载减少,因为它基本上充当内部 APIs 的代理)。
- 每个客户端使用 JWT 连接到他们需要的每个 API 服务器。 JWT 由单独的身份验证(或用户)创建 API。这是更具可扩展性的解决方案,因为唯一的瓶颈是从公共用户服务中检索最新的用户信息(这甚至可能并不总是必要的)。缺点是在客户端管理起来更复杂,并且必须在每个服务器上配置身份验证(至少对于 JWT)。然而,由于 JWT 的无状态性,不需要任何共享会话。
我和我的同事想构建一个聊天应用程序(ReactJS <-> NodeJS),我们一直在寻找最好的框架来实现这一目标。 FeathersJS 似乎无疑是最稳定和功能最丰富的 socket.io 包装器。
但是,由于我们希望允许我们的应用程序扩展,我们决定将此聊天功能拆分到与主节点后端不同的节点进程中。
然而,聊天功能仍然需要身份验证和授权,我们希望避免对这两项服务进行重复身份验证。因此,我们提出的解决方案是使用会话 cookie 查询主节点后端以在让用户使用聊天服务之前对用户进行身份验证。
FeathersJS 是建立持久的套接字连接,还是会为每条消息建立套接字连接sent/received?在第一种情况下,我们可以继续我们的架构,而在第二次我们必须审查,因为这会在主后端产生高负载。
谢谢!
有多种拆分服务的方法,每种方法各有优缺点。对于 Feathers 来说,一件普遍重要的事情是没有会话,只有 JSON web tokens。 JWT 是无状态的,可以被共享相同秘密的任何服务器读取,因此不必有中央会话存储。我能想到的两个主要选项是:
- 有一个主要的应用程序来处理授权和管理所有连接的客户端,但不是有与数据库对话的服务,而是连接到内部网络中单独的简单个体 API 服务器。这是更简单的设置,优点是内部 API 服务器可以非常简单并且根本不需要身份验证(因为允许主应用程序执行所有操作并将根据经过身份验证的用户限制进行查询).缺点是主应用程序仍然是瓶颈(但负载减少,因为它基本上充当内部 APIs 的代理)。
- 每个客户端使用 JWT 连接到他们需要的每个 API 服务器。 JWT 由单独的身份验证(或用户)创建 API。这是更具可扩展性的解决方案,因为唯一的瓶颈是从公共用户服务中检索最新的用户信息(这甚至可能并不总是必要的)。缺点是在客户端管理起来更复杂,并且必须在每个服务器上配置身份验证(至少对于 JWT)。然而,由于 JWT 的无状态性,不需要任何共享会话。