我目前有一个过时的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简单地查找有效会话