在从 IIS 托管站点连接的 NodeJS 上对用户进行身份验证


Authenticate user on NodeJS connecting from IIS hosted site

我目前有一个过时的CMS系统,我正在尝试添加实时聊天功能。CMS使用IIS,MSSQL和PHP运行。

聊天功能将从运行 Nodejs 和 Socket.io 的单独 linux 框中运行

我已经设法让CMS成功打开与Node服务器的连接,现在我需要某种方法来验证用户。

  • 节点服务器后面没有数据库
  • 节点服务器将无法通过套接字以外的方式访问 CMS
  • 新CMS用户的可能性(非常经常发生)意味着我不能只是将用户密码复制到节点服务器

我目前唯一的想法是将用户数据数组(ID,姓名,电子邮件地址)放在一起,创建此数据的哈希值,然后将数据和哈希值发送到Node。然后,节点服务器将尝试对数据进行哈希处理,并根据 CMS 发送的哈希对其进行验证。(显然,CMS和节点都会有一个预定的私有盐用于哈希)

有没有更好的方法来实现这一目标?!

一个好的经验法则是:除非您是密码学家,否则不要滚动自己的加密货币,即使这样也要三思而后行

我的建议是这样的:

  • 通过HTTPS在自己的子域上运行两个服务器(显然是同一个域)
  • 在您的会话 Cookie 上使用 *.domain.com cookie 域,并带有安全和 HttpOnly 标志,以便两个子域都可以看到它
  • 将 JSON 中的 PHP 会话保存到两个服务器都可以访问的外部键/值存储中
  • 然后,节点服务器可以根据安全cookie中的ID简单地查找有效会话