考虑以下场景: Web 应用程序使用两个独立的系统(它们可以通过 DB 共享数据/状态)。第一个用于处理标准 Web 内容,例如 HTTP 请求/响应、HTML 内容、表单和所有相关内容。其次用于实时通信,例如发送消息和通知(长轮询或 WebSocket 服务器)。
用户可以通过第一个系统/平台进行身份验证,如果凭据有效,则将一些网页发送回客户端。加载此页面后,客户端应在后台透明地与第二个系统/平台连接。
问题是:如何在后端由多个系统/平台组成的网页/应用程序上对用户进行身份验证?
我可以这样想象:
- 当用户通过第一个系统/平台进行身份验证时,会生成 GUID 令牌并将其存储在绑定到某个用户的数据库中。此令牌和用户 ID 还会在响应中发送回客户端,例如,在隐藏字段中呈现在页面上。
- 当页面加载并与第二个系统/平台发生连接时,将检索隐藏字段中的令牌和用户 ID,并将其作为连接请求的参数发送。后端找到用户,在数据库中比较他的令牌,如果它们匹配,则可以启动实时连接。
我知道这种方法很容易被嗅探,但我对两个分离的系统/平台之间的身份验证过程很感兴趣。