我正在审查将 wsgi-app 实施到浏览器会话管理的可能性和可取性,而不使用任何现成的中间件。
正在考虑的一般方法是:
在浏览器和服务器之间使用 SSL。将 SSL 会话 ID 公开给 WSGI 或 OS.environment,用作会话 ID 以启用应用程序级别的持久性和身份验证。由于如果服务器+浏览器再次握手,SSL 会话 ID 可能随时更改,因此我们的想法是使用 cookie 来保存生成的 SSL ID 的散列版本。如果他们握手并且检测到 SSL ID 的变化(暴露给环境的 SSL 会话 ID 与客户端返回的 cookie 不匹配),则可以检查散列的 cookie 以查看它是否包含先前已知的会话 ID,如果它那么我们应该继续当前会话并将 cookie 中使用的 SSL 会话 ID(并存储在后端数据库中)更新为新生成的通过握手 SSL 会话 ID。因此,即使 SSL 会话 ID 也使我们能够继续会话
据我了解,这个想法是让 SSL 生成会话 ID,并做一些比仅仅依靠 cookie+hmac 来保存会话 ID 更安全的事情。
我会对任何人对上述过程的想法感兴趣。原则上这对我来说似乎是合理的,但我对这种功能的经验很少。我已经为一些场景绘制了客户端、服务器和 wsgi-app 之间的交换流程,它似乎工作得很好,但我不太舒服,因为我已经涵盖了所有的基础。