Firebase客户端会话的解剖结构

时间:2013-12-07 01:12:55

标签: session local-storage client-side firebase

我很想解释Firebase客户端会话的工作原理。以下是Firebase在本地存储中放置的令牌。这些值代表什么以及为什么?

编辑:这解释了一些事情https://www.firebase.com/docs/security/custom-login.html

{ 
  iv: '9TCC9J+eqdgwYfLyg7nwWQ==',
  v: 1,
  iter: 1000,
  ks: 128,
  ts: 64,
  mode: 'ccm',
  adata: '',
  cipher: 'aes',
  salt: '7I8yHru1oBc=',
  ct: 'Z/yBHbOCEND7GW6fuTtT47Sw3nyo7vCb08Zs0CbspXv3JbGCVvtPbED8xsjf2Kx8TUyVKfXSfm8NQPSUVI0UY6R00UrtV8gg60kBwzcLSK6rDEfus4RvQr3eIHmMVLgk42SWJb8Ldxxnr7EeHO8gd3zGL8FivCL+oQE/8EJgm6fjubWhJsSGQ0JImz/wMKsG80UzX0WqaAJWE5BVMpLdgE3s14blT79M+CN4ZI7+NVJxUF1MEV9v/pKmB7OT7iPKXKAr2f1eCpeYfNS70u93TWzocgwiw6SVy7mg3b2U0cCrFS60yJL/5qPyE96E7R7kReNQVmWIt6zJvvJIWpkMn3M9T8SaKn+m57pd0d+NwsHXpqW/Q0fpAydgc9jL1UOAX4igXUUsK4qS5XRiuz3v8qrhw/tBLyk7j+plIMgvEuNpnmLOelbhwp8dgNWDgCNU2E5+kjKR/SVN5nxB5aWcXM9S9gLDS+NIW0/Rrf/RJfCqe46d+a0UO+9Elhp3vcYC+Zjk9lVnMyn+ZnQsnFooGsKO367QP20nQRCDb372jfhqNYi3AK5o/Dgu5oytzmJdB0EQ26WQvqurBiGTGH489PnyaGqUgAd2N5mCGqdoudde/dSJBO48CUic4b98UkdSraBdZxVK7Go3CzJmPX6I6iiI91vi1NZn9wlOvB4Toj+XSFTi7boy+t0W2oRneA5ZVo1ZsY3gRlpzJq+3tUOMOe7RlvsJxHUhFyQ6/KuyYeQXmfmp21fmiXf5hIOkDnfU5qmdTqHmBW9AYXFPi+GohdL9421GemDk1YeK0f2HOjgKw/qkzJ/bT02/ixJdpEZnIf2q7h9OgCwchuvb0bBs0WVRBxsmUMmQMM6DD+tHPHG0fbRVs6e5GsvD78bvZOdDFwU8wAMGrfKPaC4F1WqwfjHNPqkjrTAlfcwcudQRBZ++1l7Jb6rTzHQsEuTkHLRLH0E3wCk9LRX3Gt5fdau1yCZi5XatpyWxdN2QgXkAFPUDrljczu8r/3tEjbzD0DLmFvdTaVHzuarXtBZsS6+piR6b8md+IBv47wZ8fBsGUDXsrY9eFISDdL4CfWWpVIdzdIVUcGiJnCsmK8zUGNHIdezgadANwHrXc6QYiTDAO7eVrTyjcCh2odMUipmjsPkpM5H7D+fqfSIE12X6PuejYX7Yikf0WGvymqSWEFLwpUIO0b87hlmVMYKJphJJGNurT87qWgqFpoaTiXQLZfWL9wm+ZEa5zq2Fo8bO3/PtbFJqBgXgxz/HQOzOQluHWk4hitnLiWVOxoAOLENV1XEG++e355tmdvak/d1xqxfiiyF67dRQKPRsw6wE9HX/9gqPXPI7LLx0IOzY/JcHu+lwiqa872azTyX4f5XsSmTK0GoZCX5ST9fdi2ApM87guA9/IlnmbBzUocqizDYD48wNgQ6vElZY3SFG+/7xz3WyfkxrQi1nqEmPLcTFalC5sdQUxTniNjciuXhCrtjXybnUBKlZBUS76jrIFNF8XZB5uL/Thv3o0aevk3/d+VebmD7r4T+Ui+BfjeHjLIn2/iVvM9WEwk+Zfyg='
}

1 个答案:

答案 0 :(得分:8)

[Firebase工程师]您看到的有效负载是用于保存Firebase简单登录会话元数据的加密存储blob。

请注意,这不适用于Firebase,只是在自定义登录(自定义令牌生成)之上构建的简单登录服务(委托令牌生成)。

Firebase简单登录包含一个有用的内置功能,可在一段时间内保持用户会话(最多可配置30天)。在构建时,我们希望确保一些不同的东西:

  • 一旦用户登录并创建了会话,会话应该保留在客户端上,并且可以在没有往返的情况下加载到服务器,因此即使在离线时也可以引用它。
  • 会话元数据应以安全的方式存储。
  • 必须在一段时间后清除基础令牌和会话元数据,并且应由浏览器强制执行。

Firebase不会强迫您为应用程序使用SSL,因此将敏感数据存储在Cookie中是不可能的。浏览器允许您设置cookie的过期,但不能设置本地存储,这使得本地存储专用解决方案变得不切实际。此外,将数据存储在针对您的域的cookie中将导致使用不必要的带宽在每次请求时通过网络发送数据。

因此,Firebase Simple Login使用混合解决方案并将数据存储在Cookie和本地存储中,充分利用每种解决方案的优势。存储在浏览器中的数据也是加密的,要求您可以访问本地存储有效负载和cookie有效负载(在到期之前),以便访问会话元数据。